【发布时间】:2020-03-12 23:23:53
【问题描述】:
我在下面的 datagridview 中收到错误的原因是什么?
System.InvalidCastException:“Microsoft.Office.Interop.Excel.ApplicationClass”类型的 COM 对象无法分配给接口类型“Microsoft.Office.Interop.Excel._Application”。此操作失败,因为 IID 为“{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件中的 QueryInterface 调用失败并出现以下错误:加载类型库/DLL 时出错。 (返回 HRESULT 异常:0x80029C4A (TYPE_E_CANTLOADLIBRARY))。 '
我写的代码是:
saveFileDialog.InitialDirectory = "C:";
saveFileDialog.Title = "Save as Excel File";
saveFileDialog.FileName = "Data";
saveFileDialog.Filter = "Excel Files(2003)|*.xls|Excel Files(2007)|*.xlsx";
if (saveFileDialog.ShowDialog() != DialogResult.Cancel)
{
Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
excelApp.Application.Workbooks.Add(Type.Missing);
excelApp.Columns.ColumnWidth = 20;
for (int i = 1; i < dgwReport.Columns.Count + 1; i++)
{
excelApp.Cells[1, i] = dgwReport.Columns[i - 1].HeaderText;
}
for (int i = 0; i < dgwReport.Rows.Count; i++)
{
for (int j = 0; j < dgwReport.Columns.Count; j++)
{
excelApp.Cells[i + 2, j + 1] = dgwReport.Rows[i].Cells[j].Value;
}
}
excelApp.ActiveWorkbook.SaveCopyAs(saveFileDialog.FileName.ToString());
excelApp.ActiveWorkbook.Saved = true;
excelApp.Quit();
}
【问题讨论】:
-
哪一行抛出异常?你有安装 Excel 吗?
-
是的,excel installed.speak错误接收行错误接收行;excelApp.Application.Workbooks.Add(Type.Missing);
-
我无法修复错误
-
我不是 Excel 互操作方面的专家,但将
Type.Missing传递给Workbooks.Add()看起来行不通。 -
是的,这段代码已经在其他应用程序中使用过,但应该可以正常工作。我不明白问题出在哪里。 :(