将datagridview内容导出为ex​​cel

时间:2017-06-26 23:42:02

标签: c# excel datagridview export-to-excel

我想将datagridview内容导出到excel但它会抛出异常。 我有一个方法

private void exportDataGridToExcel(DataGridView grd)
        {
            if (saveFileToExcel.ShowDialog() != DialogResult.Cancel)
            {
                Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application();

                Workbook wb;
                Worksheet ws;

                wb = Excel.Workbooks.Add();
                ws = (Worksheet)wb.Worksheets.get_Item(1);

                for (int i = 0; i < grd.Columns.Count + 1; i++)
                {
                    ws.Cells[1, i] = grd.Columns[i - 1].HeaderText;
                }
                for (int i = 0; i <= grd.Rows.Count; i++)
                {
                    for (int j = 0; j <= grd.Columns.Count; j++)
                    {
                        ws.Cells[i + 1, j + 1] = grd.Rows[i - 1].Cells[j].Value.ToString();
                    }
                }
                wb.SaveAs(saveFileToExcel.FileName, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal);

                wb.Close(ws);
                Excel.Quit();
            }
        }

当我点击按钮时,它会像这样调用该方法

private void btnCheck_Click(object sender, EventArgs e)
        {
     exportDataGridToExcel(dataDaily);
        }

但它会在这行代码中引发异常Microsoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application();此异常:

“mscorlib.dll中发生了'System.Runtime.InteropServices.COMException'类型的未处理异常

其他信息:由于以下错误,检索CLSID为{00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败:80040154未注册类(HRESULT异常:0x80040154(REGDB_E_CLASSNOTREG))。“< / p>

1 个答案:

答案 0 :(得分:1)

enter image description here请确保为计算机上安装的excel版本引用正确的互操作dll。

在您的参考文献中,您将看到excel的版本。您需要确保在加载DLL的计算机上安装了该版本的excel。