delphi中GRID数据导出到EXCEL的操作

    技术2022-05-11  71

    首先确定在窗口上放有Excelapplication, Excelworkbook, Excelworksheet(在SERVER选项上),用来创建EXCEL文件及工作表.

    再放入一个按钮,作为触发器,

    拖入一个savedialog用来保存文件。代码如下:

    procedure Tfrmqry.Button1Click(Sender: TObject);

    var

     i,j,row,nall:integer;        //定义变量,i用以储存记录的数目,  j是记录的列数   row是EXCEL的行数  nall是记录的总数

    begin

      if SaveDialog1.Execute then                    // 打开保存窗口,让用户选择保存的文件名

    begin            //inintial excel  初始化EXCEL

     ExcelApplication1.Connect;

     ExcelApplication1.Workbooks.Add(Null,0);

     ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks[1]);

     ExcelWorkSheet1.ConnectTo(ExcelWorkBook1.Sheets[1] as _WorkSheet);

      begin

      nall:=qry1.RecordCount;                   //保存记录的数量

      row:=0;                                            //初始化行,定位在第一 行

     for j:=0 to QRY1.Fields.Count-1 do       // column   name,统计共有的列数目,把列名逐列导出到EXCEL第一行

            begin

       ExcelWorksheet1.Cells.item[1, j+1] := qry1.Fields[j].DisplayName  //.DisplayLabel;

            end;

      for i:=0 to nall-1 do    // total rows   正规记录,从第一条记录一直到最后循环

          while not qry1.Eof do   只要记录没到最后就执行以下动作

        begin

              for j:=0 to QRY1.Fields.Count-1 do       // column逐列导出动作

            begin

                ExcelWorkSheet1.Cells.Item[row+2,j+1]:=QRY1.Fields[j].AsString;[行,列]

            end;

                row:=row+1;  //行进行增量

           qry1.Next;        //到下一条记录

       end;

     end;

    //以下是导出完毕后的动作,

       ExcelWorkBook1.SaveCopyAs(SaveDialog1.FileName+'.xls'); //加后缀名,确保最后是EXCEL文件

       ExcelWorkBook1.Close(false);

      ExcelApplication1.Disconnect;        //断开与EXCEL的连接

      Screen.Cursor:=crDefault;          //指针随记录而动

      showmessage('成功导出 '+inttostr(nall)+' 条数据!');

    end;

    end;

     

    最新回复(0)