如何按设计好的报表格式数据导出到EXCEL中呢?(50分)

  • 主题发起人 主题发起人 zk1
  • 开始时间 开始时间
Z

zk1

Unregistered / Unconfirmed
GUEST, unregistred user!
我想实现用户选择打印报表的类型可以是直接使用设计好的报表打印,或者是按报表格式
导出到EXCEL中!!!请问有没有这样的控件可以简单实现,怎样下载控件! 如果没有控件
,请告知方法!!
 
report machine支持,但速度很慢
 
直接操作 Excel, 以下是文摘供参考::
对 Excel 的设置,可以自己在excel 中录制一些宏来查看!
use ... , comobj;
37. 将DBGrid中的数据导出到Excel表格中
写数据库程序时,通常希望把DBGrid列表中的数据导入excel表格,以下通过在数据模块中写一个共用过程,在任何地方需要时进行调用即可:
const
{ XlWBATemplate }
xlWBATChart = -4109;
xlWBATExcel4IntlMacroSheet = 4;
xlWBATExcel4MacroSheet = 3;
xlWBATWorksheet = -4167;
procedure Tsysdb.SaveToExcel(Db_data:TDBGrid);
var XlAPP:Variant;
excelcount:integer;
Sheet1:Variant;
i,j:integer;
begin
if not Db_data.DataSource.DataSet.Active then
exit;
if Db_data.DataSource.DataSet.RecordCount<1 then
exit;
//创建excel对象
try
XlApp:=createoleobject('Excel.Application');
XLApp.Visible:=false;
excelcount:=XLApp.Workbooks.count;
XLApp.Workbooks.Add(xlWBatWorkSheet);
Sheet1 := XLApp.Workbooks[1].WorkSheets['sheet1'];
except
showmessage('你的电脑没出息有安装excel程序,无法完成此功能!');
exit;
end;
//setfocus;处理标题
for j:=0 to Db_data.FieldCount-1do
begin
sheet1.cells[1,j+1]:=Db_data.Columns[j].Title.Caption;
end;
//处理记录
Db_data.DataSource.DataSet.First;
i:=2;
while not Db_data.DataSource.DataSet.Eofdo
begin
//处理一行
for j:=0 to Db_data.FieldCount-1do
begin
if Db_data.Fields[j]<>nil then
Sheet1.cells[i,j+1]:=trim(Db_data.Fields[j].asstring)
else
Sheet1.cells[i,j+1]:='';
end;
i:=i+1;
Db_data.DataSource.DataSet.Next;
end;
XLApp.Visible:=true;
end;

 
接受答案了.
 

Similar threads

后退
顶部