我必须在Visual Basic.Net中编写一个应用程序,它将打开一个excel文件,通过内容运行导出测试文件进行处理。
该应用程序对我很有用(Windows 7)但转移到WinXP PC时出现以下错误:HResult 0X800A03EC
我可以通过使Excel应用程序可见来复制此错误,因此它似乎是一个无法访问该文件的问题,因为它是打开的。尝试打开工作簿时发生错误。
原始代码
Dim excel As Excel.Application
Dim wb As Excel.Workbook
excel = New Excel.Application
excel.Visible = False
excel.UserControl = False
wb = excel.Workbooks.Open(FileLocation)
ws = wb.Worksheets(1)
ws.Activate()
要复制错误的代码
Dim excel As Excel.Application
Dim wb As Excel.Workbook
excel = New Excel.Application
excel.Visible = True
excel.UserControl = False
wb = excel.Workbooks.Open(FileLocation)
ws = wb.Worksheets(1)
ws.Activate()
答案 0 :(得分:1)
Dim cn as ADODB.Connection
Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=C:\MyFolder\MyWorkbook.xls;" & _
"Extended Properties=Excel 8.0;"
.Open
End With
这是您连接数据库的方式。选择将其读入DataSet或DataTable的方法。
除非完全需要,否则不要使用互操作我发现这种方式使用OLE连接效果最好,而且速度更快。然后你在前面有所有数据来做你喜欢的事情,你不需要在后面运行MS Excel,它有凌乱的COM对象。