在Delphi编程中使用Excel

Author: 穆永 Date: 2001年 5期

?牐犜谑菘庥τ萌砑目⒐讨校P枰咽葑怀蒃xcel文件,让用户做进一步的数据处理。而Delphi是开发数据库应用系统的常用工具,如何在Delphi中操作Excel呢?
  ?牐犜贛icrosoft Office软件中有一种内嵌的编程语言,即VBA,它是VB的子集。利用它你可以编写出功能强大的代码,如打开文件、修改数据、保存数据、设置字体等(关于Excel中的VBA编程方法、Excel对象属性、方法说明可以在Office的安装目录下的VBAXL8.hlp帮助文件中找到)。另一方面,Microsoft Office软件中的宏能以VBA代码的形式记录下你的操作过程。因此借助宏操作可以很轻松地实现某一功能,并把这些代码稍作修改嵌入到你的软件中。但是VBA的一个缺点是:它必须在Microsoft Office平台上才能运行。因此,只有把VBA代码嵌入到Delphi中,才能实现用Delphi操作Excel。
  ?牐犗旅婢倮得髡庵值饔梅椒ā?
  ?牐燯nit excel;??
  ?牐爄nterface
  ?牐爑ses
  ?牐燱indows,Messages,SysUtils,Classes,Graphics,
  ?牐燙ontrols,Forms,Dialogs,StdCtrls,ComObj;{ComObj是操作OLE对象的函数集}type TForm1=
  ?牐燾lass(TForm)??
  ?牐燘utton1: TButton;??
  ?牐爌rocedure Button1Click(Sender:TObject);?牔?
  ?牐爌rivate
  ?牐爗Private declarations}??
  ?牐爌ublic
  ?牐爗Public declarations}??
  ?牐爀nd;??
  ?牐爒ar
  ?牐燜orm1:TForm1;??
  ?牐爄mplementation
  ?牐爗$R *.DFM}??
  ?牐爌rocedure TForm1.Button1Click(Sender: TObject);?牔?
  ?牐爒ar
  ?牐爀clApp,WorkBook:Variant;{声明为OLE Automation对象} ??
  ?牐爔lsFileName:string;begin
  ?牐爔lsFileName:='ex.xls';??
  ?牐爐ry
  ?牐爗创建OLE对象:Excel Application与 WorkBook}??
  ?牐爀clApp:=CreateOleObject('Excel.Application');?牔?
  ?牐燱orkBook:=CreateOleobject('Excel.Sheet');?牔?
  ?牐爀xcept
  ?牐燬howMessage('您的机器里未安装Microsoft Excel.');?牔?
  ?牐燛xit;??
  ?牐爀nd;??
  ?牐爐ry
  ?牐燬howMessage('下面演示:新建一个XLS文件,并写入数据,最后关闭它');?牔?
  ?牐爓orkBook:=eclApp.workBooks.Add;??
  ?牐爀clApp.Cells(1,1):='字符型';??
  ?牐爀clApp.Cells(2,1):='Excel文件';??
  ?牐爀clApp.Cells(1,2):='Money型';??
  ?牐爀clApp.Cells(2,2):=10.01;??
  ?牐爀clApp.Cells(1,3):='日期型'eclApp.Cells(2,3):=Date;??
  ?牐燱orkBook.saveas(xlsFileName);?牔?
  ?牐燱orkBook.close;??
  ?牐燬howMessage('下面演示:打开刚创建的XLS文件,并修改其中的内容。然后,由用户决定是否保存。');?牔?
  ?牐燱orkBook:=eclApp.workBooks.Open(xlsFileName);?牔?
  ?牐爀clApp.Cells(2, 1):='Excel文件类型';??
  ?牐爄f MessageDlg(xlsFileName+'文件已被修改,是否保存?',mtConfirmation,[mbYes,mbNo ],0)= mrYes then
  ?牐燱orkBook.save
  ?牐爀lse
  ?牐爓orkBook.Saved: = True;{放弃修改}??
  ?牐燱orkBook.Close;??
  ?牐爀clApp.Quit;//退出Excel Application
  ?牐爗释放VARIANT变量}??
  ?牐爀clApp:=Unassigned;??
  ?牐爀xcept
  ?牐燬howMessage('不能正确操作Excel文件。可能是该文件已被其他程序打开,或系统错误');?牔?
  ?牐燱orkBook.close;
  ?牐爀clApp.Quit;
  ?牐爗释放VARIANT变量}??
  ?牐爀clApp=Unassigned;??
  ?牐爀nd;??
  ?牐爀nd;??
  ?牐爀nd.
  ?牐犃私馍鲜霾僮鞴毯螅颐强梢院苋菀椎亟菘庵械氖葑怀蒃xcel文件了。