建立与Excel连接

    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.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值