在数据库应用软件的开发过程中,经常需要把数据转换成Excel文件,让用户作进一步的数据处理。而BorlandDelphi是开发数据库应用系统的常用工具,如何在Delphi中操作Excel呢? 我们知道,在MicrosoftOffice软件中有一种内嵌的编程语言,即VBA,它是一种宏语言、VB的子集。利用它,你可以编写出功能强大的代码,如打开文件、修改数据、保存数据、设置字体等。另一方面,MicrosoftOffice软件中的宏能以VBA代码的形式记录下你的操作过程。因此借助宏操作,可以很轻松地实现某一功能,并把这些代码稍作修改嵌入到你的软件中。但是VBA的一个缺点是,它必需有MicrosoftOffice作平台,在哪里编写,必须在哪里执行。例如在Excel下编写的一段VBA代码,则它只有在Excel下才能运行。 关于Excel中的VBA编程方法、Excel对象属性、方法说明可以在Office的安装(完全安装)目录下的VBAXL8.hlp帮助文件中找到。 因此,只有把VBA代码嵌入到BorlandDelphi中,才能实现用Delphi操作Excel。 下面,以Delphi为例,说明这种调用方法。 Unit excel; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,StdCtrls,ComObj; {ComObj是操作OLE对象的函数集}type TForm1 = class(Tform) Button1: Tbutton; procedure Button1Click(Sender: Tobject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R*.DFM} procedure TForm1.Button1Click(Sender: Tobject); var eclApp,WorkBook:Variant; {声明为OLE Automation对象 } xlsFileName:string;begin xlsFileName:='ex.xls'; try {创建OLE对象:Excel Application与 WorkBook} eclApp:=CreateOleObject('Excel.Application'); WorkBook:=CreateOleobject('Excel.Sheet'); except ShowMessage('您的机器里未安装Microsoft Excel.'); Exit; end; try ShowMessage('下面演示: 新建一个XLS文件,并写入数据,最后 关闭它'); workBook:=eclApp.workBooks.Add; eclApp.Cells(1 , 1):='字符型'; eclApp.Cells(2 , 1):='Excel文件'; eclApp.Cells(1 , 2):='Money型'; eclApp.Cells(2 , 2):=10.01; eclApp.Cells(1 , 3):='日期型' ;eclApp.Cells(2 , 3):=Date; WorkBook.saveas(xlsFileName); WorkBook.close; ShowMessage('下面演示:打开刚创建的XLS文件, 并修改其中 的内容,然后,由用户决定是否保存。'); WorkBook:=eclApp.workBooks.Open(xlsFileName); eclApp.Cells(2 , 1):='Excel文件类型'; if MessageDlg(xlsFileName+'文件已被修改, 是否保存?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then WorkBook.save else workBook.Saved := True; {放弃修改} WorkBook.Close; eclApp.Quit; //退出Excel Application {释放VARIANT变量} eclApp:=Unassigned; except ShowMessage('不能正确操作Excel文件。 可能是该文件已被其他程序打开,或系统错误'); WorkBook.close; eclApp.Quit; {释放VARIANT变量} eclApp:=Unassigned; end; end; end. 了解上述操作过程后,我们可以很容易地将数据库中的数据转换成Excel文件了。pp.Cells(1 , 1):='字符型'; eclApp.Cells(2 , 1):='Excel文件'; eclApp.Cells(1 , 2):='Money型'; eclApp.Cells(2 , 2):=10.01; eclApp.Cells(1 , 3):='日期型' ;eclApp.Cells(2 , 3):=Date; WorkBook.saveas(xlsFileName); WorkBook.close; ShowMessage('下面演示:打开刚创建的XLS文件, 并修改其中 的内容,然后,由用户决定是否保存。'); WorkBook:=eclApp.workBooks.Open(xlsFileName); eclApp.Cells(2 , 1):='Excel文件类型'; if MessageDlg(xlsFileName+'文件已被修改, 是否保存?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then WorkBook.save |