在Delphi 5中embeddedExcel文件

我想embedded一个Excel文件到我的Delphi 5应用程序,所以我可以避免我的用户只是删除该文件意外。

使用embedded文件,我使用Save对话框在磁盘上创build它,然后用Excel := CreateOleObject('Excel.Application');打开它Excel := CreateOleObject('Excel.Application'); 方法。 我已经看到如何加载资源,使用THandles的例子,但我似乎并没有得到它与Excel.WorkBooks.Open(EmbeddedExcelFile);

你有没有做过这样的事情? 你会怎么做?

谢谢!

您必须将该文件包含为资源。 假设你有一个blah.xls

用下面的内容创build一个blah.rc文件

 blah RCDATA blah.xls 

用资源编译器将其编译为blah.res

将RES文件embedded到可执行文件中

 {$R 'blah.res'} 

在您的应用程序代码中,解压缩文件并使用此代码运行它

 procedure ExtractAndRun(resourceID:string; resourceFn:string); var resourceStream: TResourceStream; fileStream: TFileStream; tempPath: string; fullFileName: string; begin tempPath:=GetTempDir; FullFilename:=TempPath+'\'+resourceFN; if not FileExists(FullFilename) then begin resourceStream := TResourceStream.Create(hInstance, resourceID, RT_RCDATA); try fileStream := TFileStream.Create(FullFilename, fmCreate); try fileStream.CopyFrom(resourceStream, 0); finally fileStream.Free; end; finally resourceStream.Free; end; end; ShellExecute(0,'open', pchar(FullFilename), nil, nil, SW_SHOWNORMAL); end; 

您将不得不在您的使用条款中添加ShellApi

也许你会需要这个GetTempDir函数

 function GetTempDir: string; var Buffer: array[0..MAX_PATH] of char; begin GetTempPath(SizeOf(Buffer) - 1, Buffer); result := StrPas(Buffer); end; 

像这样调用函数

  extractAndRun('blah','blah.xls'); 

我很确定它不会工作。 您必须将文件保存在临时文件夹中,然后进行修改,然后执行任何您想要的操作。