我有一个已经运行了 15 年的项目,当尝试在我的本地计算机和用户办公室的计算机上创建 Excel 文件时,突然出现错误。 为了测试,我创建了一个新项目(Windows 10、Windows Forms、.Net Framework 4.7.2),安装了 Microsoft.Office.Interop.Excel NuGet 包,向表单添加了一个按钮,并在单击事件中设置将单元格的值设置为“Hello World”,但我仍然收到错误。 除了修复 Excel 的建议之外,我在网上找不到任何有关此错误的信息,但我已经这样做了,但没有成功。
错误如下:
System.InvalidCastException:“无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象转换为接口类型“Microsoft.Office.Interop.Excel._Application”。此操作失败,因为对 IID 为“{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件上的 QueryInterface 调用由于以下错误而失败:找不到元素。 (HRESULT 异常:0x8002802B (TYPE_E_ELEMENTNOTFOUND))。'
这是 vb.net 代码:
Dim xlApp As Excel.Application = New Excel.Application()
Dim xlWb As Excel.Workbook = xlApp.Workbooks.Add() ' fails on this line
Dim xlSheet As Excel.Worksheet = CType(xlWb.Sheets(1), Excel.Worksheet)
xlSheet.Cells(1, 1).FormulaR1C1 = "hello world!"
xlApp.Workbooks(1).SaveAs("testing.xls")
xlApp.Visible = True
以上所有内容均在 Option Strict On 下进行
如果我制作另一个项目,请保留 Option Strict Off,不要下载 NuGet 包并使用下面的代码,我没有任何问题
Dim xlApp As Object = Nothing
Dim xlBook As Object
Dim xlSheet As Object
xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
xlApp.DisplayAlerts = False
xlBook = xlApp.Workbooks.Add
xlSheet = xlBook.Sheets(1)
xlSheet.Cells(1, 1).FormulaR1C1 = "Hello world!"
xlApp.Visible = True
尝试检查您的加载项。 特别是您的 COM 加载项。