建立与Excel连接
来源:互联网 发布:js判断字符串特殊符号 编辑:程序博客网 时间:2024/05/01 22:16
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.