【发布时间】:2016-04-29 09:32:45
【问题描述】:
我正在创建一个自动创建 Excel 文件的方法。 Excel 文件(格式)的外观将取决于给定的 VB.NET 脚本。现在我在引用程序集 Microsoft.Office.Interop.Excel.dll 时遇到了问题。下面是我的示例代码:
Imports System.CodeDom.Compiler
Imports Microsoft.Office.Interop
Public Class ExcelScript
Public Sub ExecuteExcelScript(VBCode As String, ds As DataSet)
Dim provOptions As New Dictionary(Of String, String)
provOptions.Add("CompilerVersion", "v4.0")
Dim vbProvider As New VBCodeProvider(provOptions)
Dim vbParameter As New CompilerParameters
Dim compResults As CompilerResults = Nothing
VBCode = "Imports System" & vbNewLine &
"Imports System.Data" & vbNewLine &
"Imports System.Data.SqlClient" & vbNewLine &
"Imports Microsoft.Office.Interop" & vbNewLine &
"Public Class GenerateExcel" & vbNewLine &
"Public Sub GenerateExcelFromScript(ds As DataSet)" & vbNewLine &
VBCode & vbNewLine &
"End Sub" & vbNewLine &
"End Class"
vbParameter.ReferencedAssemblies.Add("System.dll")
vbParameter.ReferencedAssemblies.Add("System.Data.dll")
vbParameter.ReferencedAssemblies.Add("System.Xml.dll")
vbParameter.ReferencedAssemblies.Add("Microsoft.Office.Interop.Excel.dll")
vbParameter.GenerateExecutable = False
vbParameter.GenerateInMemory = True
vbParameter.OutputAssembly = "ExcelGenerator"
compResults = vbProvider.CompileAssemblyFromSource(vbParameter, VBCode)
End Sub
End Class
上面的代码不起作用,并返回文件 Microsoft.Office.Interop.Excel.dll 找不到的错误。但是,如果我像这样指定 dll 的绝对路径,它将起作用:
vbParameter.ReferencedAssemblies.Add("C:\Program Files (x86)\Microsoft Visual Studio 14.0\Visual Studio Tools for Office\PIA\Office15\Microsoft.Office.Interop.Excel.dll")
我无法为我们的最终用户部署具有绝对路径的软件,因为他们可能安装了不同版本的 Microsoft Office,而且他们的 Excel 互操作程序集的位置也可能不同。是否有其他方法可以引用此程序集或获取此程序集的完整路径以在部署到另一台 PC 时引用?
【问题讨论】:
标签: .net vb.net excel office-interop