使用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只是打开文件,如你所期望的 – 看到这里