把数据库表里的信息 导入Execl表 程序截图

uses

   Excel2000,  Math, OleServer

添加 ToolBar1, Gauge1,ImageList1,ExcelWorkbook1,ExcelWorksheet1,ADOConnection1,ADOQuery1,DataSource1 ,Memo1,DBGrid1,StatusBar1

 

 

unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ComCtrls, ImgList, ToolWin, DB, Grids, DBGrids, ADODB, StdCtrls,

  Gauges, Excel2000,  Math, OleServer;

type

  TForm1 = class(TForm)

    Memo1: TMemo;

    ADOConnection1: TADOConnection;

    ADOQuery1: TADOQuery;

    DBGrid1: TDBGrid;

    DataSource1: TDataSource;

    ToolBar1: TToolBar;

    ImageList1: TImageList;

    ToolButton1: TToolButton;

    ToolButton2: TToolButton;

    ToolButton3: TToolButton;

    ToolButton4: TToolButton;

    ToolButton5: TToolButton;

    ToolButton6: TToolButton;

    ToolButton7: TToolButton;

    Gauge1: TGauge;

    ExcelWorksheet1: TExcelWorksheet;

    StatusBar1: TStatusBar;

    ExcelWorkbook1: TExcelWorkbook;

    procedure ToolButton5Click(Sender: TObject);

    procedure ToolButton7Click(Sender: TObject);

    //procedure ExcelApplication1NewWorkbook(Sender: TObject;

     // var Wb: OleVariant);

  private

    { Private declarations }

  public

    { Public declarations }

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



procedure TForm1.ToolButton5Click(Sender: TObject);

var

  SQLStr : String;

begin   //根据Memo1中的SQL语句提取数据库的信息显示在DBgrid
  SQLStr := '';

  SQLStr :=Memo1.Lines.GetText;



  ADOQuery1.Close;

  ADOQuery1.Sql.Clear;

  ADOQuery1.SqL.Add(SQLStr);

  ADOQuery1.Open;

  end;



procedure TForm1.ToolButton7Click(Sender: TObject);

var

 ExcelApp1:TExcelApplication;  //uses Excel2000

    Row,i:Integer;

    AFileName : string;

begin

  AFileName := 'D:\a.xlsx';

  ExcelApp1:=TExcelApplication.Create(nil);

  try

    ExcelApp1.Connect;//和Execl连接如果没有Excel程序可能要出错

    ExcelApp1.Workbooks.Add(Null,0);//为Excel添加工作薄

    ExcelWorkbook1.ConnectTo(ExcelApp1.Workbooks[1]);

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



    if DBGrid1.DataSource.DataSet.RecordCount=0 then Exit;

    row:=2;

    for i:=1 to ADOQuery1.Fields.Count do

    begin

      ExcelWorkSheet1.Cells.Item[1,i]:=ADOQuery1.Fields[i-1].FieldName ;

    end;

    ADOQuery1.First;

    while not ADOQuery1.Eof do

    begin

      Application.ProcessMessages;

      for i:=1 to ADOQuery1.Fields.Count do

      begin //把查询结果写入到电子表格中

        excelworksheet1.Cells.Item[row,i].numberformatlocal:='@';

        ExcelWorkSheet1.Cells.Item[row,i]:=ADOQuery1.Fields[i-1].Value;

      end;

      row:=row+1;

      Gauge1.Progress:=Ceil(100*(row-2)/(ADOQuery1.RecordCount));

      if Gauge1.Progress=100 then StatusBar1.Panels[1].Text:='导出完成,已保存至'+AFileName;          //AFileName是导出文件存放的目录位置。

      ADOQuery1.Next;

    end;

  finally

    ExcelWorkBook1.SaveCopyAs(AFileName);

    ExcelWorkSheet1.Disconnect;

    ExcelWorkBook1.Close(False);

    ExcelApp1.Disconnect;

    ExcelApp1.Quit;

    ExcelApp1.Free;

    Gauge1.Visible:=False;

  end;

end;









end.

你可能感兴趣的:(exec)