【发布时间】:2017-01-16 11:43:59
【问题描述】:
我正在编写一个利用 Microsoft.Office.Interop.Excel 程序集的类。它是“一站式”DLL 库的一部分,将在 Java 解决方案中使用(以限制 Java 端的接口数量)。
我收到以下错误:
附加信息:无法将“System.__ComObject”类型的 COM 对象转换为接口类型“Microsoft.Office.Interop.Excel.Worksheets”。此操作失败,因为 IID 为“{000208B1-0000-0000-C000-000000000046}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:不支持此类接口(来自 HRESULT 的异常:0x80004002 (E_NOINTERFACE)) .
这是由以下代码引发的:
Public Class XL
Public XL As Excel.Application = Nothing
Public XLN As String
Public WBS As Excel.Workbooks = Nothing
Public WBSN() As String
Public WB As Excel._Workbook = Nothing
Public WBN As String
Public WSS As Excel.Worksheets = Nothing
Public WSSN() As String
Public WS As Excel._Worksheet = Nothing
Public WSN As String
Public XLCelllValue As Object = Nothing
Public Sub New()
XL = New Excel.Application()
XL.Visible = True
WBS = XL.Workbooks
WB = WBS.Add()
WSS = WB.Worksheets '<this is the line that throws the exception
WS = WSS(1)
End Sub
End Class
我不确定我在做什么错所有属性都被声明为公共,Worksheets 是一个有效的集合,WB 属性类型是 Excel._workbook,WSS 属性类型是 Excel.worksheets。
任何想法我错过了什么?
【问题讨论】:
-
作为答案的补充,我遇到了Why can't set cast an object from Excel interop? 和Excel interop: _Worksheet or Worksheet?,这可能对您有用。
标签: .net excel vb.net excel-interop