如何把StringGrid和DBGrid中的内容导出到excel表中,要求导出表后.在excel表中可以体现出那些表格.

解决方案 »

  1.   

    提供一个思想,先生成CSV(逗号分隔各项)文件,然后转化成XLS.
      

  2.   

    看看这个能不能给你提示
    interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs,excelxp, StdCtrls, Grids, DBGrids, DB, DBTables, OleServer;type
      TForm1 = class(TForm)
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        Button1: TButton;
        Query1: TQuery;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
    //申明EXCEL的变量
      myexcel:texcelapplication;
      mybook:texcelworkbook;
      mysheet:texcelworksheet;implementation{$R *.dfm}
    //将当前浏览的结果生成EXCEL文件
    procedure TForm1.Button1Click(Sender: TObject);
    var
    x,y,i,j:integer;
    begin
    myexcel:=texcelapplication.create(self);
    myexcel.connect;
    myexcel.visible[0]:=true;
    mybook:=texcelworkbook.create(self);
    mysheet:=texcelworksheet.create(self);
    mybook.connectto(myexcel.workbooks.add(emptyparam,0));
    mysheet.connectto(mybook.worksheets.add(emptyparam,emptyparam,emptyparam,emptyparam,0) as _worksheet);
    x:=query1.fieldcount;
    y:=query1.recordcount;
    for I:=1 to x do
    mysheet.cells.item[1,i]:=query1.fields[i-1].fullname;
    query1.first;
    for j:=2 to y+1 do
    begin
    for i:=1 to x do
    begin
    mysheet.cells.item[j,i]:=query1.fields[i-1].value;
    end;
    query1.next;
    end;
    myexcel.free;
    mybook.free;
    mysheet.free;
    end;