如下程序:(有点乱,不过很简单的,你自己稍微看一下把)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, Grids, DBGrids, ADODB,ComObj;
type
TForm1 = class(TForm)
ADOQuery1: TADOQuery;
DBGrid1: TDBGrid;
SaveDialog1: TSaveDialog;
DataSource1: TDataSource;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
SaveDialog1.Execute;
ADOQuery1.Active:=false;
ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'userdata.mdb;Persist Security Info=False';
ADOQuery1.Active:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form2.show;
end;
procedure TForm1.Button3Click(Sender: TObject);
var c,r,i,j : integer ;
ExApp : Olevariant ;
TempFileName,ResultFileName: String ;
begin
try
ExApp:= CreateOLEObject('Excel.application') ;
except
Messagedlg('Excel没有正确安装!',mterror,[mbok],0);
exit ;
end ;
ExApp.Workbooks.add ;
ExApp.Visible := false ;
DBGrid1.DataSource.DataSet.First;
c:=DBGrid1.DataSource.DataSet.FieldCount ;
r:=DBGrid1.DataSource.DataSet.RecordCount ;
for i:=0 to c-1 do
ExApp.cells(1,1+i):= DBGrid1.DataSource.DataSet.Fields.DisplayLabel ;
for j:=1 to r do
begin
for i:=0 to c-1 do
ExApp.cells(j+1,1+i):= DBGrid1.DataSource.DataSet.Fields.AsString ;
DBGrid1.DataSource.DataSet.Next ;
end ;
SaveDialog1.Filter:='MicroSoft Excel 工作簿|*.xls;';
SaveDialog1.FileName:='水损分析报表' ;
if SaveDialog1.Execute then
begin
ExApp.Activeworkbook.saveas(saveDialog1.FileName) ;
ExApp.Activeworkbook.close(false) ;
ExApp.Quit ;
ExApp:=Unassigned ;
end;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,unit1,
StdCtrls, Grids, DBGrids, Db, DBTables,ComObj;
type
TForm2 = class(TForm)
Button1: TButton;
SaveDialog1: TSaveDialog;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.DFM}
procedure TForm2.Button1Click(Sender: TObject);
begin
SaveDialog1.Execute;
form1.ADOQuery1.Active:=false;
form1.ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'userdata.mdb;Persist Security Info=False';
form1.ADOQuery1.Active:=true;
end;
procedure TForm2.Button3Click(Sender: TObject);
var c,r,i,j : integer ;
ExApp : Olevariant ;
TempFileName,ResultFileName: String ;
begin
try
ExApp:= CreateOLEObject('Excel.application') ;
except
Messagedlg('Excel没有正确安装!',mterror,[mbok],0);
exit ;
end ;
ExApp.Workbooks.add ;
ExApp.Visible := false ;
form1.DBGrid1.DataSource.DataSet.First;
c:=form1.DBGrid1.DataSource.DataSet.FieldCount ;
r:=form1.DBGrid1.DataSource.DataSet.RecordCount ;
for i:=0 to c-1 do
ExApp.cells(1,1+i):= form1.DBGrid1.DataSource.DataSet.Fields.DisplayLabel ;
for j:=1 to r do
begin
for i:=0 to c-1 do
ExApp.cells(j+1,1+i):= form1.DBGrid1.DataSource.DataSet.Fields.AsString ;
form1.DBGrid1.DataSource.DataSet.Next ;
end ;
form1.SaveDialog1.Filter:='MicroSoft Excel 工作簿|*.xls;';
form1.SaveDialog1.FileName:='水损分析报表' ;
if form1.SaveDialog1.Execute then
begin
ExApp.Activeworkbook.saveas(form1.saveDialog1.FileName) ;
ExApp.Activeworkbook.close(false) ;
ExApp.Quit ;
ExApp:=Unassigned ;
end;
end;
end.