0

我正在尝试通过 ole 打开和刷新 excel 2003 电子表格。但是,我收到错误“工作簿类的添加方法失败”,没有更多信息。

该代码在单元测试中工作,在 3 个服务器上工作,但在我们的 Web 服务器上失败并出现错误。它是从在本地系统帐户下运行的服务应用程序运行的。

所有服务器上都安装了相同版本的 excel (2003 sp3)。有问题的文件都存在并且位于预期的位置。

电子表格中没有宏,但有数据库查询。电子表格都可以打开。

调用代码是

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

关于我还能尝试什么的任何想法?

4

4 回答 4

4

我遇到了同样的错误

xls.WorkBooks.Add(xlWBATWorksheet);

我将该行更改为

xls.Application.Workbooks.Add;

现在它正在工作。您可能会先尝试获取 Workbook,然后再尝试调用其方法。

于 2012-01-04T13:39:16.383 回答
1

Workbooks.Open可能是您正在寻找的方法

Add创建一个新的空工作簿。如果您提供文件名,该文件将用作新文件的模板 - 请参见此处

Open只需按照您的预期打开文件 - 请参见此处

于 2009-12-12T00:17:41.063 回答
1

不支持在服务中自动化 Office 应用程序。

虽然有可能,但它非常困难,你会遇到很多问题,比如这个。也会很慢。

您应该寻找一个处理 Excel 文件的 Delphi 组件,例如这个. (请注意,我并不是特别推荐那个;这是我在 Google 上找到的第一个)

根据您尝试执行的操作,您或许可以改用 OLE DB

于 2009-12-10T02:40:40.937 回答
0

当我碰巧在 Windows 资源管理器窗口中选择了 Excel 电子表格文件时遇到了这个错误,没有打开,只是选择了。当我取消选择文件时,我没有收到错误消息。

于 2019-12-31T21:31:21.147 回答