2009-12-10 121 views
0

我想通过ole打开并刷新excel 2003电子表格。但是,我收到错误“添加方法Workbooks类失败”,没有进一步的信息。使用excel获取错误“工作簿类的添加方法失败”

该代码适用于单元测试,适用于3台服务器,但因Web服务器上的错误而失败。它是从本地系统帐户下运行的服务应用程序运行的。

在所有服务器(2003 sp3)上安装了相同版本的excel。所讨论的文件全部存在并且处于预期的位置。

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

调用代码

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 

上还有什么我可以尝试任何想法?

回答

1

自动化服务中的Office应用程序是not supported

虽然这是可能的,但它很困难,而且会碰到很多问题,比如这个。它也会很慢。

您应该寻找一个操纵Excel文件的Delphi组件,例如this one。 (请注意,我并不特别推荐那款;这是我在Google上发现的第一款)

根据您要做的事情,您可能可以使用use OLE DB instead

1

Workbooks.Open可能是你正在寻找

Add的方法创建一个新的空工作簿。如果您提供的文件名,该文件被用作新的文件的模板 - 见here

Open只是打开你所期望的文件 - 看here

+0

刚刚尝试过,它将错误更改为“打开方法的工作簿类失败”:( – SeanX 2009-12-15 20:19:12

3

我已经收到同样的错误

xls.WorkBooks.Add(xlWBATWorksheet); 

我改变该行

xls.Application.Workbooks.Add; 

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

+0

谢谢,这是我完全相同的问题,以及固定。 – 2013-01-28 17:51:17

+0

这是工作多年。解决一些已经工作的东西*叹息* – 2013-01-29 18:02:32

+0

同样在这里,它一直这样工作多年,现在突然不是...... – 2013-01-30 18:53:29

相关问题