unit UJoin_excel;
interface
uses
//定义使用系统的单元文件
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, OleServer, ExtCtrls, DBCtrls, Grids, DBGrids,
Db, DBTables, Excel2000,Variants;
//如果用户使用的不是Delphi 7(如Delphi 5),则可能要指定Excel97,而非Excel2000
type
TForm1 = class(TForm)
//定义在窗体上使用的组件,包括作为自动化服务器的Excel组件
ExcelApplication1: TExcelApplication;
ExcelWorksheet1: TExcelWorksheet;
ExcelWorkbook1: TExcelWorkbook;
SaveDialog1: TSaveDialog;
ConnectBtn: TBitBtn;
Query1: TQuery;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
InsertDataBtn: TBitBtn;
SaveBtn: TBitBtn;
QuitBtn: TBitBtn;
CloseAppBtn: TBitBtn;
Label1: TLabel;
//如下定义按钮的事件处理过程
procedure FormCreate(Sender: TObject);
procedure ConnectBtnClick(Sender: TObject);
procedure InsertDataBtnClick(Sender: TObject);
procedure SaveBtnClick(Sender: TObject);
procedure QuitBtnClick(Sender: TObject);
procedure CloseAppBtnClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses
ComObj;
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
//建立窗体时的事件处理过程
begin
Query1.close;
Query1.Open;
//获取用于制作电子表的数据库信息
showmessage('欢迎你使用Excel自动化服务器!');
//showmessage(IntToStr(Query1.FieldCount));
end;
procedure TForm1.ConnectBtnClick(Sender: TObject);
//连接Excel按钮的事件处理过程,启动Excel,并设置相关标题
begin
Try
ExcelApplication1.Connect;
//建立与Excel的连接,如果出错则显示提示信息
Except
MessageDlg('Excel2000是否已正确安装',mtError, [mbOk], 0);
Abort;
//如果出错,不报告错误信息,结束当前程序的执行
End;
ExcelApplication1.Visible[0]:=True;
//设置成可视状态
ExcelApplication1.Caption:='Delphi连接Excel应用';
//设置Excel的标题
ExcelApplication1.Workbooks.Add(Null,0);
ExcelApplication1.Workbooks.Add(emptyParam,0);
//增加一个新的空工作簿
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
//连接工作簿
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
//连接工作表
end;
procedure TForm1.InsertDataBtnClick(Sender: TObject);
//插入数据按钮的事件处理过程,在Excel工作表中生成需要表格
//并将数据库的内容写入Excel的工作表中
var
i,row,column:integer;
//定义用于控制单元格的变量
begin
//如下设置单元格第一行的内容,即各列的标题,本表有7列组成
ExcelWorksheet1.Cells.Item[1,1]:='时间';
//设置第一列的标题
ExcelWorksheet1.Cells.Item[1,2]:='年度指标';
ExcelWorksheet1.Cells.Item[1,3]:='当年拨款';
ExcelWorksheet1.Cells.Item[1,4]:='支出数额';
ExcelWorksheet1.Cells.Item[1,5]:='余额';
ExcelWorksheet1.Cells.Item[1,6]:='超支';
ExcelWorksheet1.Cells.Item[1,7]:='上年节余';
//设置第7列的标题
row:=2;
While Not(Query1.Eof) do
//此循环将满足条件的数据库记录写入Excel的工作表中
begin
column:=1;
for i:=1 to Query1.FieldCount do
//此循环控制写出的列数
begin
ExcelWorksheet1.Cells.Item[row,column]:=Query1.fields[i-1].AsString;
//为工作表的单元格赋值,row,column用于控制行和列
column:=column+1;
end;
Query1.Next;
//获取下一个数据库记录
row:=row+1;
end;
end;
procedure TForm1.SaveBtnClick(Sender: TObject);
//保存按钮的事件处理过程,将Excel表中的数据保存到用户指定的文件中
begin
if SaveDialog1.Execute then
ExcelWorksheet1.SaveAs(SaveDialog1.FileName);
//根据对话框输入的文件名,保存工作表
end;
procedure TForm1.QuitBtnClick(Sender: TObject);
//退出Excel按钮对话框,关闭Excel,并解除与Excel的连接
begin
ExcelApplication1.Quit;
//关闭Excel,并显示是否保存的提示信息
ExcelApplication1.Disconnect;
//解除与Excel自动化服务器的连接
end;
procedure TForm1.CloseAppBtnClick(Sender: TObject);
//关闭应用,结束程序的运行
begin
close;
//调用窗体的close方法。
end;
end.