陈雪莲
摘 要:尝试对复杂报表进行结构化描述,利用结构化描述数据和自定义的用户对象提供的接口极大地简化了复杂报表的制作,就复杂报表的结构化描述做了详细的描述。
关键词:结构化;复杂报表;自动生成
1 引言
在国内的数据库应用开发中,复杂报表的制作始终是一个棘手的问题,这是由报表表现形式的复杂性和格式、内容的灵活性决定的。而常用的开发工具所生成的报表通常格式简单、功能单一,对于实际问题中出现的特殊格式,如多层表头报表,各种票据格式等,都显得力不从心。
目前,在数据处理和信息管理方面,使用MS Excel制作各种报表非常普及,用户希望一个使用管理信息系统能将生成的报表导出到Excel中,以进一步进行加工处理,扩展系统信息处理能力。
为满足工程项目开发的实际需要,尝试对复杂报表形式进行结构化描述,并在此基础上定义了一个报表生成与excel导出对象类,极大的简化了复杂报表的制作。本文就复杂报表的结构化描述及使用OLE技术实现复杂报表生成的原理做了详细介绍。
2 复杂报表结构化模型
2.1 模型原理
复杂报表结构化模型的原理如图1所示,报表的结构化描述与自动生成程序从报表结构化描述数据库获取报表结构信息,从MIS数据数据库获取报表数据内容,经过综合处理之后,将结构导出到excel文件中,生成目标报表。
2.2 复杂报表结构模型
⑴报表结构化描述模型。为了描述问题的简洁,本文规定:
1)纵向位置:对应于Excel报表中的列序,起始位置为1,自左向右顺序计数;
2)横向位置:对应于Excel报表中的行序,起始位置为1,自上而下顺序计数;
3)數据标题:报表表头中与表体的某一列有直接对应关系的文字描述标题;
4)文本标题:报表表头中描述数据标题之间关系,一个文本标题可以覆盖2个或2个以上的数据标题或文本标题,是报表复杂性的主要表现。
报表结构化描述的数据结构定义如下:
Structure stru_head
String HeadID //标题的纵向位置描述
Integer Rand //标题的横向位置描述
String HeadText //标题显示文本
Integer ParentRank //父标题的横向位置描述
String HeadName //数据标题对应的字段名
End structure
其中,HeadID的取值定义可以区分数据标题和文本标题,数据标题HeadID取值为其在报表表体中对应的列序,文本标题的HeadID的取值由它所覆盖的所有标题的序列中最小与最大两个序列组成。文本标题的Rank等于其在报表表头中的行序,数据标题的Rank一律取值为报表表头的总行数。标题的ParentRank定义为相邻上层标题的行序,如果该标题没有相邻上层标题,则其ParentRank取值为0。
⑵报表结构化描述实例。本文选取一个具有多层表头的统计报表为例,利用本文提出的复杂报表结构化描述模型对该报表进行结构化描述。多层表头统计报表内容如表1所示,根据报表结构化模型描述的报表结构如表2所示。
表1中的标题“路线编号”与表体中的第1列直接对应,是数据标题,因此其HeadID取值为“01”;该报表表头部分共有3行,故其Rank取值为3;其没有相邻上层标题,所以其ParentRank取值为0;要显示的文本即为HeadText的值“路线编号”;HeadName的取值为其在数据库表中的字段名C_lxbh.
表1中的标题“结构形式”与表体中的列不直接对应,是文本标题,它覆盖了数据标题“上部”(列序03)和“下部”(列序04)两列,因此其HeadID取值为“0304”;其位于报表表头的第2行,故其rank为2;其相邻上层标题位于第一行,故parentrank为1,要显示的文本即为HeadText的值“结构形式”;文本标题没有数据库表中字段与其对应,故其HeadName项为空。
3 结论
本文介绍了复杂报表的结构化描述,实现了Excel报表的自动生成,该方法对于各种信息系统中复杂报表的生成具有一定的通用性,极大的缩短了相似功能的开发周期。
[参考文献]
[1]吴雷,袁兆山,李超.B/S结构下复杂报表实现技术的研究[J].计算机应用研究,2006, 23(5):83-85.
[2]程志蓉.智能报表生成系统的研究[J].许昌学院学报,2004,23(2):93-95.