由于它的局限性,我负责在我的办公室(Pascal)维护一些遗留代码,我编写了一个delphi dll来使用TExcelApplication访问excel。
dll在办公室工作得很好,机器运行Microsoft Office 2010,Windows 7 32位和64位。客户端正在使用Novel Workstations,Windows XP,Microsoft 2007。
遇到TExcelApplication.Connect时,dll会出现断点异常;命令。
除了我提到的差异之外,情景完全相同。
在新工作站上访问Microsoft Excel是否有任何限制,或者,有更好的方法来访问Excel文档吗?
注意:我只想阅读Excel文档,它跨越多行,列和电子表格,源Excel文档是* .xls 2007文档。
它的主要功能是启用Excel文档的自动协调。
以下是图书馆代码的片段
library MyLibrary;
uses
SysUtils, Classes, Variants, Dialogs, StdCtrls, OleServer, ExcelXP, Windows;
Type
PString=String[254];
Var
ExcelObj : TExcelApplication;
Procedure XLSOPEN(THENAME:PSTRING;VAR Reslt:PSTRING); stdcall;
Begin
If FileExists(THENAME) Then
Begin
ExcelObj := TExcelApplication.Create(nil);
ExcelObj.ConnectKind := ckRunningOrNew;
ExcelObj.Connect;
If ExcelObj=nil Then
Begin
Result := 'Error : EXCEL couldnt be started!';
Exit;
End Else
Begin
Result := 'Successful';
Exit;
End;
End Else
Begin
Result := 'Error : File '+THENAME+' does not exist!';
Exit;
End;
End;
Exports XLSOPEN Name 'XLSOpen';
Begin
End.
答案 0 :(得分:1)
您需要将ActiveX
添加到您的使用列表中,并使用CoInitialize(nil);
初始化ActiveX组件。这是因为Application-> Initialize初始化组件,现在它是一个dll,你必须在加载时手动初始化组件,并在卸载dll时使用UnCoInitizlise;
。
USES ActiveX, Windows;
INITIALIZATION
CoInitialize(nil);
FINALIZATION
UnCoInitialize;