怎么样把查询出来的内容导出到EXCEL或打印出来。。(10分)

  • 主题发起人 主题发起人 pxlh
  • 开始时间 开始时间
P

pxlh

Unregistered / Unconfirmed
GUEST, unregistred user!
我是通过QUERY和DBGRID组件查询来获得数据的。。。
 
导到EXCEL,你需要调用EXCEL COM组件,这方面网上资料太多了,GOOGLE一下就有了;
打印的话导出到EXCEL可以,用报表也可以,自己写打印程序也可以
 
我刚做完的一个项目里面的查询窗口的部分代码。我用的adodataset,和query用法基本相同。我为了省事所以用的variant变量,如果你想速度快的话就改用COM接口,编译的时候就可以纠错。

procedure Tfrmbomqry.ExportToExcel;
var
i,r: integer;
s: string;
ExcelApp: variant;
ws : variant
begin
if not dtqry.Active or (dtqry.RecordCount = 0) then Exit

frmwait.Show
bbtnexcel.Enabled := False
try
try
ExcelApp := CreateOleObject('Excel.Application');
ExcelApp.Visible:=True;
except
raise Exception.Create('您的计算机没有安装Excel2000以上版本或安装不正确,因此无法导出!!')
end
ExcelApp.Workbooks.Add(-4167);
ws:=ExcelApp.Workbooks[1].sheets[1];
ws.Name := 'BOM文件'
ws.Cells.NumberFormat := '@'
ws.Columns.ColumnWidth := 20;
r := 1
for i := 1 to 8 do ws.Cells[r,i] := GridTitles;

r := 2;
dtqry.DisableControls;
try
with dtqry do begin
First;
while not Eof do begin
for i := 1 to 8 do begin
s := GridFields;
del(s,1,2);//delete "a." or "b."
ws.Cells[r,i] := FieldByName(s).AsString;
end;
Next;
r := r + 1;
end;
end;//with
STMessageBox('统计数据已经导出至Excel中!','导出完毕',64)

finally
dtqry.EnableControls;
end;
finally
frmwait.Close
bbtnexcel.Enabled := True
end;
end;
 
建议用dbgrideh,导出很方便的!数据量大的时候,好象用dbgrid的方法很慢。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2368382
PROCEDURE Tfmoupt.btnOUtClick(Sender: TObject);
BEGIN
sdlg.DefaultExt := 'XLS';
sdlg.Filter := '*.XLS|*.XLS';
sdlg.FileName := '0'+zzpfrm.bmcb.text+'.xls';
IF sdlg.Execute THEN
BEGIN
IF sdlg.FileName <> '' THEN
BEGIN
SaveDBGridEhToExportFile(TDBGridEhExportAsXLS, Adbg, sdlg.FileName,
true);
END;
END;
application.MessageBox(pchar('成功输出数据到' + sdlg.filename + '!'), '恭喜',
0);
END;
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
915
SUNSTONE的Delphi笔记
S
后退
顶部