将datagridview内容导出为ex​​cel

我正在导出datagridview内容,但它会抛出exception。 我有一个方法

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(); } } 

当我点击button时,它会调用像这样的方法

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

但它在这行代码中引发exceptionMicrosoft.Office.Interop.Excel.Application Excel = new Microsoft.Office.Interop.Excel.Application(); 这个例外:

mscorlib.dll中发生“System.Runtime.InteropServices.COMException”types的未处理exception

其他信息:检索具有CLSID {00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败,原因如下:80040154类未注册(exception来自HRESULT:0x80040154(REGDB_E_CLASSNOTREG))。

在这里输入图像说明 确保你的计算机上安装的excel版本的引用正确的interop dll。

在你的参考资料中,你会看到一个excel的版本。 您需要确保在加载DLL的机器上安装了该版本的Excel。