希望会对你有所帮助! 将查询结果显示在DBGrid中,再生成Excel文件 procedure Tmulti_searchform.ButtontoExcelClick(Sender: TObject); var eclApp,WorkBook:Variant; //声明为OLE Automation 对象 xlsfilename,dir_name:string; i,j,n:integer; begin //savedialog1.Execute; savedialog1.Filter:='Excel files(*.xls)|*.xls'; dir_name:=ExtractFilePath(Application.ExeName)+'ExcelBook\'; if not directoryexists(dir_name) then createdir(dir_name); savedialog1.InitialDir:=dir_name; if savedialog1.Execute=true then begin xlsFileName:=savedialog1.FileName; try //创建OLE对象Excel Application与 WorkBook eclApp:=CreateOleObject('Excel.Application'); WorkBook:=CreateOleobject('Excel.Sheet'); except ShowMessage('您的机器里尚未安装Microsoft Excel。'); Exit; end; try //ShowMessage('新建一个EXCEL文件,并保存'); Application.MessageBox('将新建一个EXCEL文件,并保存','注意',MB_OK+MB_Defbutton1) finally progressbar1.Visible:=true; workBook:=eclApp.workBooks.Add; multi_dataMForm.ADODataSet3.first; i:=1; j:=1; for n:=0 to multi_dataMForm.ADODataSet3.fieldcount-1 do begin eclApp.cells(i, j):=self.DBGrid1.Columns.Items[n].Title.Caption; // eclApp.cells(i, j):=multi_dataMForm.ADODataSet3.fields[n]..displaylabel; j:=j+1; end; multi_dataMForm.ADODataSet3.Active:=true; multi_dataMForm.ADODataSet3.first; while not multi_dataMForm.ADODataSet3.eof do begin inc(i); for j:=0 to multi_dataMForm.ADODataSet3.fieldcount-1 do begin progressbar1.Position:=(i*100) div multi_dataMForm.ADODataSet3.RecordCount; eclApp.cells(i,j+1):=multi_dataMForm.ADODataSet3.Fields.Fields[j].Text; end; multi_dataMForm.ADODataSet3.Next; end; progressbar1.Visible:=false; WorkBook.saveas(xlsFileName); WorkBook.close; end; end; end;
将查询结果显示在DBGrid中,再生成Excel文件
procedure Tmulti_searchform.ButtontoExcelClick(Sender: TObject);
var
eclApp,WorkBook:Variant;
//声明为OLE Automation 对象
xlsfilename,dir_name:string;
i,j,n:integer;
begin
//savedialog1.Execute;
savedialog1.Filter:='Excel files(*.xls)|*.xls';
dir_name:=ExtractFilePath(Application.ExeName)+'ExcelBook\';
if not directoryexists(dir_name) then
createdir(dir_name);
savedialog1.InitialDir:=dir_name;
if savedialog1.Execute=true then
begin
xlsFileName:=savedialog1.FileName;
try
//创建OLE对象Excel Application与 WorkBook
eclApp:=CreateOleObject('Excel.Application');
WorkBook:=CreateOleobject('Excel.Sheet');
except
ShowMessage('您的机器里尚未安装Microsoft Excel。');
Exit;
end;
try
//ShowMessage('新建一个EXCEL文件,并保存');
Application.MessageBox('将新建一个EXCEL文件,并保存','注意',MB_OK+MB_Defbutton1)
finally
progressbar1.Visible:=true;
workBook:=eclApp.workBooks.Add;
multi_dataMForm.ADODataSet3.first;
i:=1;
j:=1;
for n:=0 to multi_dataMForm.ADODataSet3.fieldcount-1 do
begin
eclApp.cells(i, j):=self.DBGrid1.Columns.Items[n].Title.Caption;
// eclApp.cells(i, j):=multi_dataMForm.ADODataSet3.fields[n]..displaylabel;
j:=j+1;
end;
multi_dataMForm.ADODataSet3.Active:=true;
multi_dataMForm.ADODataSet3.first;
while not multi_dataMForm.ADODataSet3.eof do
begin
inc(i);
for j:=0 to multi_dataMForm.ADODataSet3.fieldcount-1 do
begin
progressbar1.Position:=(i*100) div multi_dataMForm.ADODataSet3.RecordCount;
eclApp.cells(i,j+1):=multi_dataMForm.ADODataSet3.Fields.Fields[j].Text;
end;
multi_dataMForm.ADODataSet3.Next;
end;
progressbar1.Visible:=false;
WorkBook.saveas(xlsFileName);
WorkBook.close;
end;
end;
end;