一种通用报表的设计和实现
出处:陈双君 发布于:2010-11-02 15:38:07
摘 要: 提出一种通用报表的设计和实现方法, 在信息管理系统设计中, 查询数据通常需要以报表的形式输出, 设计了一个非常实用的函数, 采用OLE 自动化技术, 通过程序代码实现对Excel 文档的各种编辑功能, 并应用于一类通用报表的设计和输出。设计的函数简单、易于调用, 可以大大减少信息系统开发中一类通用报表的设计工作量, 可重用性高。该方法已经应用于多个实际应用系统的开发和设计。在此详尽分析和阐述了通用报表的设计和实现, 并给出了该函数的主要代码。
0 引 言
软件设计和开发过程中, 一般都要求数据的输出, 并且以报表的形式进行展示。一般的软件设计都提供设计报表的工具和组件, 常用的开发工具有微软的VS 系列, Borland 系列等设计工具都提供报表设计功能,但是都需要软件开发者采用定制的形式逐个进行设计,而一般的MIS 系统都有为数不少的报表设计工作, 并且报表形式大多是通用的数据报表, 部分为图表结合的报表、三维报表以及其他形式的报表。在工程实践过程中,逐个设计报表需要很大的工作, 一旦需要修改, 则逐个修改的工作量很大, 存在重复设计和维护问题。
文献提出的报表设计方法, 基本侧重在设计技术和技巧, 或者是定义报表组件方面, 其特点是功能多, 使用较为复杂, 部分也直接输出为Excel 报表格式。本文主要针对的情况是在信息系统中, 各种查询的数据一般都是展示在界面窗口中, 显示的格式已经带有二维报表的特性, 带有标题、列标题和数据等。本文在软件工程开发实践中, 利用OLE 自动化技术, 使用Microsoft VBA 接口, 直接把显示栅格中的数据, 直接以Excel 报表的格式输出。这种报表具有通用性强, 使用非常简单。同时可以利用Excel 的功能进行报表格式的控制。本文以Bor land Dephi6. 0( 或以上版本) 进行阐述实现的原理, 并给出实现的步骤和代码。
1 通用报表分析
1. 1 报表的数据
报表的数据一般从单个或多个数据库表中获取, 而一般通过SQL 查询语句得到数据。通常在MIS 系统设计上, 往往都是先显示在窗口界面, 然后输出打印。所以无论什么形式的数据总是先显示在窗口界面的数据栅格中, 如Delphi 中通常用TDBGid 或TStringGrid中。因此可以直接把显示在Grid 中的数据直接为报表数据输出即可。而TDBGrid 通过TDatasource 获得现实的数据源, TDataSour ce 的通过TDateset 取得数据,TDataset 有3 种数据形式: T T able, TQuery 和TStore2Procedur e。而T T able 完全使用简单的TQuery 可以实现并代替。TQuer y 通过SQL 语句提取数据库中的数据, SQL 语句极为灵活, 可以完成很多包括统计、排序、多表操作等各种功能, 而Select 类的SQL 语句返回的数据均为二维数据。
1. 2 报表的显示格式
一般通用的二维报表包括标题、副标题、列标题、数据行、表尾等几个部分, 当然也有很多复杂的报表, 但是复杂的报表一般都需要设计和定制。而本文需要解决的正式这种简单的而又通用的二维报表, 可以通过简单的函数调用即可完成。
2 报表设计的实现
本文以Delphi 开发环境下, Borland Delphi 中调用Excel 的方式有4 种方式, 见文献的相关章节。这里使用以Variant 变量的方式来调用Excel。具体的方法可以参见Gr idToExcel 函数中的代码。
函数体中控制输入和设置Excel 的各种属性等操作, 需要操作Excel 文件的接口文件Excel TLB. pas。该文件提供了编程操作Excel 的Delphi 接口类库, 需要Microsoft Office 环境下, 通过Delphi 提供的导入类库来实现, 具体操作步骤为: 打开Delphi, 点击Project菜单下的/ Impor t T ype Libr ary , 0, 在弹出对话框中,点击/ Add , 0 , 从office 安装的文件夹找到xl5chs32. olb 文件, 然后点击/ Create Unit0即生成Ex2cel TLB. pas 文件, 把生成的Excel TLB. pas 文件另存到项目的文件夹以备使用。本文实现的函数( Gr id2T oExcel) 所在单元必须在USES 部分加入ExcelTLB 单元。
3 报表输出函数实现
这里给出了表格输出函数的设计步骤和代码。函数名称为GridT oExcel, 参数有grid 类型为TDBGrid,xl file: string 为Excel 输出的文件名, 报表标题T1:string。函数返回值为输入的报表数据行数。函数使用的局部变量如下:
函数体分为以下几个部分。
( 1) 创建Excel 自动化对象, 代码如下:
/ / 判断Gr id 是否有数据, 无则直接返回
( 2) 填充标题到Excel 对象, 代码如下:
( 3) 设置Excel 报表显示的标题行格式:
( 4) 设置表格线:
( 5) 把Grid 中的数据填到Excel 中:
( 6) 调整Excel 的列宽度自适应宽度:
( 7) 保存报表为指定的Excel 文件名
上述的函数完全可以加入到设计系统的Delphi 项目中, 并作为通用的函数, 加入到通用函数库单元中, 需要在函数所在单元的USES 部分加入上述的ExcelTLB 单元。如系统地把图书系统的查询结果输出到报表, 只需要在查询界面中增加一个按钮, 按钮点击事件代码如下。就可以生成生成一个Excel 二维报表。
5 结 语
报表制作是MIS 系统开发过程的一个重要的部分, 许多通用的报表制作工具都提供了很大的功能支持, 但是对于设计者而言都需要逐个设计, 且工作繁琐,维护工作量大。本文详细阐述了通过一个简单的函数实现简单报表功能, 可以给一类简单的二维报表输出提供很方便的调用。提供了完整的Delphi 函数实现代码, 可以把其封装为DLL 库的方式, 供其他编程开发工具调用。该报表输出方法已经在开发的/ XX 汽车维修企业信息系统0、/ 出版社图书信息管理0等多个MIS 系统得到应用, 提高了报表设计的效率。
下一篇:数码相机在自动气象站中的应用
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,//domainnameq.cn,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- 什么是树莓派?一文快速了解树莓派基础知识2025/6/18 16:30:52
- 什么是有机液分析与有机液知识介绍2025/6/7 16:31:44
- FPGA中的双线性插值算法2025/5/29 17:16:30
- keil4和keil5的区别,哪个好?2025/5/22 17:03:33
- MOLEX 441331000高密度板对板连接器技术解析2025/4/24 11:24:50