我目前正在编写一个自定义DLL,以方便Java到HostExplorer界面。显然Java无法直接访问Host Explorer API,或者至少是Java方面告诉我的,这是正常的。但是我愚蠢地决定也包括一些Excel自动化方法,这就是我遇到问题的地方。
DLL编译时没有任何错误,但是当我尝试访问我编写的Excel类的某些元素时,我收到以下错误:
找不到与嵌入类型“Microsoft.Office.Interop.Excel._Workbook”匹配的互操作类型。您是否缺少装配参考?
找不到与嵌入类型“Microsoft.Office.Interop.Excel._Worksheet”匹配的互操作类型。您是否缺少装配参考?“
这是XL类的相关代码:
Imports System.Windows.Forms
Imports System.Drawing
Imports Microsoft.Office.Interop
Public Class XL
Public XL As Excel.Application
Public WBS As Excel.Workbooks
Public WB As Excel._Workbook
Public WSS As Excel.Worksheets
Public WS As Excel._Worksheet
Public Sub New(Optional ByVal WBN As String = "")
XL = New Excel.Application()
WBS = XL.Workbooks
If WBN <> "" Then
WB = WBS.Add(NameOf(WBN))
Else
WB = WBS.Add()
End If
WSS = WB.Worksheets
WS = WSS(1)
End Sub
End Class
然后将其引用并导入到我用于测试的程序中:
Imports HE_AUTO
Module Module1
Sub main()
Dim tso As New HE("TSO")
tso.Read(1, 1, 1900)
Dim output As New XL("test")
output.WS.cells(1, 1).value = tso.HostStr
Dim x As String = output.WS.cells(1, 1).value
output.XLSaveAndClose(output.WB.name, "C:\", "testoutput.xlsx")
Dim wb1 As Object = output.XLWBOpen("C:\", "testoutput.xlsx")
End Sub
End Module
output.WS 和 output.WB 给了我错误。 现在我知道简单的解决方案是向我的测试程序添加对Office Interop的引用,但由于DLL将用作Java中的接口,因此这不是一个选项。
我错过了一些明显的东西吗?