在Delphi中将查询结果导入到Excel,每一个sheet满后再新建一个sheet,但保存时不在一个文件,怎样将数据导入到一个文件的不同Sheet中,高分相送

解决方案 »

  1.   

    你可以用ADO直接连接Excel,这样操作起来也很方便,而且ADO提供了对Excel的良好支持。
      

  2.   

    以上转载自《Delphi之未经证实的葵花宝典version 2.7》整理:hubdog
    ---- 首先新建一Application, 然后在Form1上放置Servers栏控件ExcelApplication1、 ExcelWorkbook1、 ExcelWorksheet1, 再放置控件Table1、 Datasource1、 Dbgrid1、 Button1、 Button2、 Button3、 Button4, 并设置Table1.databasename:=dbdemos, Table1.TableName:=Country.db, Table1.active:=True, Button1.Caption:='SaveToExcel', Button2.caption:='PrintPreview', Button3.caption:='Print', Button4.caption:='CloseExcel'。代码如下: unit Unit1;interfaceuses
     Windows, Messages, SysUtils, Classes, 
     Graphics, Controls, 
     Forms, Dialogs, Excel97, OleServer, Db, DBTables,
     Grids, DBGrids, StdCtrls;type
     TForm1 = class(TForm)
      ExcelApplication1: TExcelApplication;
      ExcelWorkbook1: TExcelWorkbook;
      ExcelWorksheet1: TExcelWorksheet;
      Table1: TTable;
      Table1Name: TStringField;
      Table1Capital: TStringField;
      Table1Continent: TStringField;
      Table1Area: TFloatField;
      Table1Population: TFloatField;
      button1: TButton;
      DataSource1: TDataSource;
      DBGrid1: TDBGrid;
      Button2: TButton;
      Button3: TButton;
      Button4: TButton;
      procedure button1Click(Sender: TObject);
      procedure Button2Click(Sender: TObject);
      procedure Button3Click(Sender: TObject);
      procedure Button4Click(Sender: TObject);
     private
      { Private declarations }
     public
      { Public declarations }
     end;var
     Form1: TForm1;implementation{$R *.DFM}procedure TForm1.button1Click(Sender: TObject);
    var
     i,row,column:integer;
    begin
     Try
      ExcelApplication1.Connect;
     Except
      MessageDlg('Excel may not be installed',
      mtError, [mbOk], 0);
      Abort;
     End;
     ExcelApplication1.Visible[0]:=True;
     ExcelApplication1.Caption:='Excel Application';
     ExcelApplication1.Workbooks.Add(Null,0);
     ExcelWorkbook1.ConnectTo
     (ExcelApplication1.Workbooks[1]);
     ExcelWorksheet1.ConnectTo
     (ExcelWorkbook1.Worksheets[1] as _Worksheet);
     Table1.Open;
     row:=1;
     While Not(Table1.Eof) do
     begin
       column:=1;
       for i:=1 to Table1.FieldCount do
       begin
        ExcelWorksheet1.Cells.Item[row,column]:
    =Table1.fields[i-1].AsString;
        column:=column+1;
       end;
       Table1.Next;
       row:=row+1;
     end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
    ExcelWorksheet1.PrintPreview;
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
     ExcelWorksheet1.PrintOut;
    end;procedure TForm1.Button4Click(Sender: TObject);
    begin
     ExcelApplication1.Disconnect;
     ExcelApplication1.Quit;
    end;end.