我觉得在报表处作很难,
建议用query在数据源处处理,
可以把不同的数据表放到一起。
建议用query在数据源处处理,
可以把不同的数据表放到一起。
解决方案 »
- 如何用类的成员函数做回调函数呀?
- iTemp:array [0..512] of byte; 怎么把 iTemp 转成 TBytes啊?! SendTo需要 TBytes...
- 請教 BDE 出錯,該如何處理?
- 100分探讨!如何知道鼠标点击了另一个程序(比如计算器)上的第二个按钮或单选框?
- 关于日期格式和货币格式问题
- 做了个象蚂蚁的小窗口,当屏保发生后,奇怪的事发生了!!!
- 界面设计的问题请教
- 有什么办法可以加快ACCESS的速度
- 学习或研究用Delphi写ISAPI/CGI程序吗?完全源码公开
- 哪里有李维的三本书下啊?
- TWebBrowser控件无法响应回车键怎么办?希望得到一个很妥当的方法
- 如何使TStringGrid的某个单元得到焦点?
use excel2000
procedure dbgridtoexcel(dbgrid1 : tdbgrid );
var hei ,i :integer;
ExcelApplication1:tExcelApplication;
ExcelWorkbook1:tExcelWorkbook;
ExcelWorksheet1:tExcelWorksheet;
begin
ExcelApplication1:=tExcelApplication.create(dbgrid1);
ExcelWorkbook1:=tExcelWorkbook.create(dbgrid1);
ExcelWorksheet1:=tExcelWorksheet.create(dbgrid1);
ExcelApplication1.Connect;
ExcelApplication1.Visible[0]:=True;
ExcelApplication1.Workbooks.Add(extractfilepath(application.exename)+'text\book1.xlt',0);
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Sheets[1] as _WorkSheet);
with dbgrid1.DataSource.DataSet do
if active then
begin
first;
hei:=1;
i:=0;
for i:=0 to fieldcount-1 do
begin
ExcelWorksheet1.Cells.Item[hei,i+1]:=Fields[i].displaylabel;
end;
hei:=2;
while not(eof) do
begin
for i:=0 to fieldcount-1 do
begin
ExcelWorksheet1.Cells.Item[hei,i+1]:=Fields[i].asstring;
end;
next;
inc(hei,1);
end;
end
else
showmessage('请先打开相对应的数据源.');
ExcelApplication1.Disconnect;
ExcelApplication1.Quit;
ExcelApplication1.free;
ExcelWorkbook1.free;
ExcelWorksheet1.free;
end;
但报表的字段怎么处理呢。