admin 管理员组文章数量: 1184232
2024年4月20日发(作者:muimui女包)
龙源期刊网
Delphi编程实现Excel报表自动生成和发布
作者:冷建功 赵健
来源:《科技创新与应用》2013年第11期
摘 要:文章介绍如何使用 Delphi 编程通过定义报表内容描述、Excel 模板文件和服务器描
述文件实现 Oracle 数据库和 Excel 模板文件的数据交换,并以 Ftp 方式自动发布到 Web 数据
发布平台。
关键词:Delphi;Excel模板;报表定义;Ftp
1 引言
随着计算机应用技术的快速发展,Excel 电子表格的普及,工作中常常需要从不同的信息
管理系统中查询统计数据并以 Excel 表格方式展现报表。由于行业或者业务部门需求的变化,
导致报表格式、种类繁多。一些复杂报表,需求在软件开发期间都无法明确,为了解决此类问
题,采用了表格功能强大的 Excel 作为报表模板,Delphi 程序根据报表数据定义动态填入数
据,完成数据填充后以 Ftp 方式上传填写完数据的文件到 Web 数据发布平台,从而实现 Excel
报表的自动生成和发布功能。
2 实现原理
2.1 按照业务部门的需求,根据需要的报表格式,编辑好Excel报表模板文件;根据报表
的数据内容和区域,编写好报表定义文件。
2.2 以报表定义文件文件名作为运行的参数,在操作系统下创建批处理命令,并可以根据
实际需要把批处理加入操作系统的计划任务,实现按程序自动运行。
2.3 程序根据报表定义文件的描述,主要做如下操作:①读取指定的 Excel 模板文件;②
到指定的数据库服务器查询数据并填充 Excel 模板文件;③以Ftp方式上传生成好的Excel报
表文件到FTP服务器。
3 实现过程描述
3.1 报表定义文件
采用可扩展标记语言(XML文件描述),主要内容描述如下:
report name
龙源期刊网
D:\xxxx\template_
D:\xxxx\
1
ftp server name
ftp remote dir
……
database name
1
n1,n2,n3,n4
select col1,col2,… from table_name
……
……
在 Delphi 中使用控件解析方法生成 XML 文件接口框架代码,通过生成的接口单元读取
XML 文件,主要代码如下:
Var xmlReport:IXMLReportType;//定义报表定义文件变量
……
xmlReport := LoadReport(报表定义XML文件);//读取报表定义文件
if length(trim(ver))>0 then //是否指定FTP上传服务器
uplaodFile();//上传文件到Ftp服务器
龙源期刊网
……
3.2 服务器定义文件
文件格式同报表定义文件,主要内容及描述如下:
server name user/pwd@ip:port:sid
……
ftp server name
5000
username
……
Delphi 处理该文件方法同上,根据指定服务器名称取查找服务器子节点,主要代码如下:
//根据指定的FTP名称,取服务器定义文件中 FTP 中节点
for i := 0 to - 1 do begin
if (trim([i].Name) = trim(serverName)) then begin
result := [i]; exit; end;
龙源期刊网
end;
3.3 采用第三方数据库控件 ODAC 访问 Oracle 数据库
ODAC 全称 Oracle Data Access Components,是 Oracle 数据存取组件,直接使用 Oracle 接
口(OCI),在应用中建立连接可以使用 ODAC Net 选项无需在客户机上安装 Oralce 客户端,
仅需 TCP/IP 支持,本次开发中使用了 TOraSession 和 TOraQuery 两个控件,主要代码如下:
if ted then ; //关闭数据库连接
tString := getOracleServerNode(OracleServerNname).ConnectString;//
修改连接字串, 函数 getOracleServerNode 返回变量 Oracle 服务器节点;
t;//连接数据库;
ToraQuery 的使用方法同 Delphi 中 TQuery;
3.4 Oracle 数据集填充 Excel 数据区域
根据指定数据区域和SQL语句向Excel模板文件中填写数据,注意点:SQL语句运行结
果和指定数据区域要一一对应。
//处理Excel模板主要代码 excelTemplate 类型为 Variant;
excelTemplate := CreateOleObject( 'ation' );
e := false;//设置程序运行时为不可见
(Excel模板文件);
……
oks[1].saveas(outFile);//保存Execl模板文件
; //关闭
//填充 OraQuery 数据集到 excel 模板文件主要代码, rectarea 为报表定义文件中当前数据
区域节点
rect := strToRect();// strToRect为自定义 String 转 TRect 函数
eets[].Activate;//指定 excelTemplate中sheet;
龙源期刊网
;
for nowRow := to do begin
for nowCol := to do begin
[nowRow,nowCol] := ist[].AsString;
end;
;
end;
……
采用Delphi中 TNMFTP 控件上传文件
所有数据区域数据填充结束后,根据报表定义文件中指定的 FTP 服务器名称,在服务器
定义中查找对应 FTP 服务器节点上传文件,实现主要代码如下:
FtpFile:=(nil);
:= trim(); //FTP设置服务器地址
:= StrToInt (); //FTP设置端口号
:=trim(); //FTP设置用户名
rd:=trim(); //FTP设置口令
t:= StrToInt(t); //FTP设置延时
……
If ted then (MODE_BYTE);//设置按二进制方式传
(, + ExtractFileName
());//上传文件
……
4 结束语
龙源期刊网
Excel是使用广泛的办公软件,通过Excel与Delphi结合,使用者只要熟悉Oracle数据库
查询语言就可以设计出比较复杂的报表格式,并实现报表的定期自动生成与上传,切实提高了
工作效率。
参考文献
[1]耿宏运,等.Delphi6组件大全[M].北京:电子工业出版社,2002,7.
[2]Casteel,9i开发指南(PL\SQL程序设计)[M].北京:清华大学出版社,
2004,3.
版权声明:本文标题:Delphi编程实现Excel报表自动生成和发布 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1713573981a641444.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论