【摘要】针对现有煤矿报表制作和显示软件所发现的报表软件代码重用性差、报表自定义实现方法复杂、浏览器无法加载报表ActiveX控件等问题,设计了一款以可扩展单元格为模型的自定义报表设计显示软件,该软件能够很好地解决以上的问题,具有很高的实用性。
【关键词】自定义报表;可扩展单元格;横向扩展;纵向扩展;报表组件
1.引言
1.1 报表技术背景
当前报表技术发展的比较成熟了,市场上也存在多个报表产品,其中复杂报表的处理一直是国内报表市场的一个重头戏。数年前国内报表厂商就清晰地提出了中国式报表概念,所谓中国式报表是相对于国外报表来说的。
国外报表:国外的报表样式非常规整,没有格线,表头非常简单,没有斜线表头、没有分层分组。一张报表提供的信息有限,如果要看所有信息,就只能几张表对照着看了。另外,国外的报表似乎没有填的需求。
中国式报表:格式复杂、信息量大。中国报表很少有不带格线的:因为中国的表头比较乱,三五层的大格套小格很常见(还有著名的斜线),没有格线容易看走眼。中国式报表的信息量大,各种各样的数据,明细的、汇总的,往往都集中在一张纸上。
由此对比可以看出中国式报表的问题:(1)格式复杂――意味着格式是报表工具要解决的一个问题;(2)信息量大――意味着复杂的统计运算。一个适合中国式报表的报表制作显示工具应该能够同时解决这两个问题,才能算是一个好的工具。
对于中国式报表的特点,国内厂家就纷纷提出了各种解决方案,笔者就目前市场上的报表产品做了一个简单的比较。
归纳起来现在的报表技术主要分了三种:
a.任意扩展的类Excel报表;
b.拖拽加拼排的结构化设计;
c.结构化和任意扩展混合型。
1.2 报表发展方向
针对于煤矿的报表实际使用习惯和需求,在煤矿自定义报表的解决方案上,笔者倾向于A类方案。
因为首先考虑到使用平台,煤矿自定义报表不需要做到全通用的跨行业平台的万能报表,在结合煤矿实际的业务流程后,得出了一些煤矿专用报表格式。其次考虑到煤矿用户的实际使用水平等,自定义报表不需要太过复杂,尤其是涉及到开放数据库进行用户自定义组合列来实时生成查询语义。
由此可以得出结论,煤矿自定义报表的用户主要分为程序员和煤矿监控操作员这两类人群,其中主要偏向于程序员为主。设计思路是以生成一些现成的可替换的查询语义提供给用户使用,同时该报表的整个框架可以重用,用户(程序员)不需要关心报表显示的细节,只需要将注意力着重于报表的业务数据组织即可。
2.系统总体设计
2.1 系统结构
整个报表平台开发流程如下:
报表制作产生报表模板文件,同时加载报表数据驱动扩展模块,调用驱动的业务数据配置界面,将业务数据绘制到模板文件上,当保存模板文件时,自动解析整张模板文件,获取模板文件上配置的业务数据并清空,再调用数据驱动扩展模块的保存接口,保存业务数据,再保存模板文件。
项目将报表文件路径作为参数调用报表模板显示模块,报表模板显示模块读取模板文件后,对于报表显示终端控件进行编辑,绘制整张报表模板,
项目调用报表数据驱动模块来读取数据业务文件,解析数据业务与数据源的对应关系,根据对应关系去获取数据,并调用报表显示终端控件来编辑整张报表模板,填充相应的报表业务数据。
2.2 系统功能
整个系统可以划分为以下几个功能模块:
(1)报表制作:该功能的使用者为程序员或是煤矿操作员,主要是用来制作报表的显示模板和定制报表的业务数据信息。主要功能有报表文件类操作、报表页面编辑功能、报表可扩展单元格设置、报表自定义脚本数据源定义等。
报表文件类操作:主要负责报表项目文件和业务文件的分离,及各个文件的存储和读取功能,
报表页面编辑功能:主要负责定义报表的模板数据内容,例如编辑报表各个单元格的格式、字体、显示静态文字内容等。
报表可扩展单元格设置:主要负责定义报表的业务数据内容,例如设置某个单元格为可扩展的单元格,并且设置扩展方向和数据源。
报表自定义脚本数据源定义:主要是负责允许煤矿操作员制作临时需要的自定义数据源。
(2)报表数据驱动:该模块主要是负责解析报表业务数据文件,将报表定义的业务数据和实际业务数据源关联起来,并且执行读取实际业务数据源操作,同时根据报表可扩展单元格的设置,进行数据的扩展和排版,形成最终的报表显示数据。
(3)报表Web显示引擎:该模块主要是根据整张报表最终的显示数据,自动解析为对应的报表web显示脚本,并输出给调用者。
3.关键技术
3.1 报表数据驱动
(1)数据扩展算法
(2)扩展单元算法
按照行方式检索当前报表页的所有可扩展单元格,当检索到该单元格属于可扩展单元格时,检索该可扩展单元格列索引之前的所有单元格,当发现有与该可扩展单元格扩展方向不一致,则该可扩展单元格的扩展方式是行扩展,否则是单元扩展。
4.系统应用成果
从***4中我们可以明显比较出,采用可扩展单元格模型的自定义报表,存在着操作便利的优势,用户只需要配置一行数据源后,就可以完成整张报表的显示。
试验测试结果验证了该系统的优势和实用性。
5.结语
扩展型自定义报表的实现改进了传统的手工编程方式绘制整张报表的流程,使得现在的报表系统更加简单,更具有可移植性。该系统的设计不仅具有实践意义,而且也能为将来的报表组件化提供一些参考和借鉴。
参考文献
[1]宋晓宇,刘蔚然,刘天波.基于组件的自定义报表系统的设计与实现[J].计算机工程与设计,2008(29).
[2]陈传波,黄刚,刘清慧.一种基于的自定义报表的设计与实现[J].计算机工程与科学,2006(6).
[3]宣士斌,李永胜,李熹,刘美玲.VC中基于Excel的用户自定义报表设计[J].计算机工程与设计,2006(8).
[4][美]海杰尔斯伯格,韦尔特马瑟,戈尔德.C#编程语言详解(第2版)[M].韩江,王秀慧译.2007.8.
[5]陈国华,刘海林.管理信息系统中自定义报表工具的研究与设计[M].计算机应用与软件,2006(5).
[6]杜嘉.呼叫中心自定义报表生成系统的设计与实现[J].2010,6.
基金项目:江苏省省级现代服务业(软件产业)发展专项引导资金资助项目(Z065);科技部院所技术开发专项(2012EG122196)。
作者简介:丁瑞琦(1981—),男,江苏常州人,硕士研究生,主要从事煤矿监测类软件设计与研发工作。
转载请注明出处学文网 » 可扩展单元格自定义报表的设计