使用excel ole获取错误“Workbooks类的添加方法失败”
我想通过ole打开并刷新一个excel 2003电子表格。 但是我收到错误“添加方法的Workbooks类失败”没有进一步的信息。
该代码工作在unit testing,并在3台服务器上运行,但失败,在我们的networking服务器上的错误。 它是从本地系统帐户下运行的服务应用程序运行的。
所有服务器(2003 sp3)上都安装了相同版本的excel。 有问题的文件都存在,并在预期的位置。
电子表格中没有macros,但有数据库查询。 电子表格都可以打开。
调用代码是
if VarIsEmpty(XLApp) then begin XLApp := CreateOleObject('Excel.Application'); try XLApp.DisplayAlerts:= wdAlertsNone; except ... end; XLApp.AutomationSecurity:= msoAutomationSecurityForceDisable; end; fullFileName:= ExpandReportFileName( partialFilename); if not FileExists(fullFileName) then raise Exception.Create('File not found: ' + fullFileName); XLAPP.Workbooks.Add(fullFileName); << fail here
任何想法,我还可以尝试什么?
我得到了同样的错误
xls.WorkBooks.Add(xlWBATWorksheet);
我改变了这一行
xls.Application.Workbooks.Add;
现在它正在工作。 您可能会尝试先获取工作簿,然后尝试调用其方法。
不支持自动化服务中的Office应用程序。
虽然这是可能的,但这很困难,而且会遇到很多问题,比如这个。 这也会很慢。
你应该寻找一个操纵Excel文件的Delphi组件,比如这个 。 (请注意,我不是特别推荐那个,这是我在Google上发现的第一个)
根据你想要做什么,你也许可以使用OLE DB 。
Workbooks.Open
打开可能是你正在寻找的方法
Add
创build一个新的空工作簿。 如果你提供一个文件名,这个文件被用作新文件的模板 – 参见这里
Open
只是打开文件,如你所期望的 – 看到这里