首页  编辑  

在DELPHI中操作Excel

Tags: /超级猛料/Office.OA自动化/Excel/   Date Created:
在DELPHI中操作Excel
□ 曾剑平
在数据库应用软件的开发过程中,经常需要的数据转换成Excel文字,让用户作进一步的数据处理。而Borland Delphi是开发数据库应用系统的常用工具,如何在Delphi中操作Excel呢?
我们知道,在Microsoft office软件中有一种内嵌的编程语言,即VBA,它是一种宏语言、VB的子集。利用它,你可以编写出功能强大的代码,如打开文件、修改数据、保存数据、设置字体等。另一方面,Microsoft office软件中的宏能以VBA代码的形式记录下你的操作过程,因此借助宏操作,可以很轻松地实现某一功能,并把这些代码稍作修改嵌入你的软件中。但是VBA有一个缺点,它必需有Microsoft office操作平台,在哪里编写,必须在哪里执行。例如在Excel下编写的一段VBA代码,则它只有在Excel下才能执行。
关于Excel中的VBA编程方法、Excel对象属性、方法说明可以在Microsoft office的安装(完全安装)目录下的VBAXL8.hlp帮助文件中找到。
因此,只有把VBA代码嵌入到Borland Delphi中,才能实现用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 declaration }
  Public
    { Public declaration }
  end;

var
  Form1: TForm1;

Implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: Tobject);
var
  eclApp, WordBook: Variant; { 声明为OLE Automation对象 }
  xlsFileName: string;
begin
  xlsFileName := 'ex.xls';
  try
    { 创建OLE对象:Excel Application与WordBook }
    eclApp := CreateOleObject('Excel.Application');
    WorkBook := CreateOleObject('excel.Sheet');
  Except
    Application.MessageBox('你的机器没有安装Microsoft Excel', '使用Microsoft Excel',
      MB_OK + MB_ICONWarning);
    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(1, 4) := '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文件。