JAVA报表的套打

        信息系统中的套打表单对于JAVA报表绘制的精确度要求很高。为了达到在套打纸张上的准确打印,需要反复调试报表。
       
  传统的JAVA报表工具由于使用的是控件拖拽方式进行报表设计,在设计套打表单时,需要度量票据各框的数值,然后在控件属性中进行设置。这样定义出来的报表由于打印时的边距设置,还需要多次测试打印,才能最终完成套打表单,相当的费时费力。
   
         快逸报表采用底图描绘的方式来定义JAVA套打报表。   以1:1的比例扫描纸质票据,在报表设计时引入扫描图片作为JAVA报表绘制的底图,在底图上对应描绘,拖拉边框重合底图边线即可精确绘制出套打表格,使绘制复杂度极大降低。

    JAVA报表定义完成后,在打印预览时可以看到完整效果,实际打印时只会将数据打印出来。用这种方式处理套打表单,一般调校2-3次就可以了,相当方便。

报表分类-绘制方案

        现在在市场上能看到的 Web 报表工具软件的绘制方案有两种: Excel 式和拖拽式(也有称画布式)。

        前者与EXCEL类似,由单元格组成报表,单元格的边框组成报表的格线。

        拖拽式则是通过控件摆放,用控件的矩形边框重合摆出报表的格线。

        国内报表对样式要求非常复杂而且严格,它决定了报表样式的复杂度和绘制效率,以及导出 EXCEL 的能力(这是用户很强调的功能)。

        Excel式在这方面有明显的优势,能够画出样式很复杂的报表,绘制效率也比控件拖拽式高出10倍以上,而且导出 EXCEL 时格式上不会失真,个别产品还可以直接读入 EXCEL 画好的表以进一步提高效率。

        拖拽式则显得非常笨拙,常见的复杂多层表头画起来非常繁琐,某些纵向合并格甚至无法绘制出来,屏幕上对齐的表在打印时或在 WEB 上显示时又可能不整齐,生成 EXCEL 时经常丧失格式或导致格线太多太细而无法应用,读入 EXCEL 格式则更是完全不可能有的功能。

更多参考:Excel式设计报表分类-数学模型报表分类-实现技术

类Excel设计器的基本标准

        现在很多报表开发工具改头换面后都号称支持类Excel式的报表设计,到底什么才是真正的类Excel报表设计器,今天我们主要从两方面来讨论:一是一个类Excel的报表设计器应该具备的最基本的功能;二是除了基本功能外,结合报表的数据特点,还应该有哪些扩充?详见 类 Excel报表设计器扩充标准 。        报表厂商选择使用类Excel方式进行报表开发主要是为了解决报表的复杂表样,提高画报表的效率,而国内的用户大都非常熟悉Excel的使用。从设计的方便性来说,厂商们需要提供一个尽可能贴近 Excel 使用习惯的设计器。说白了,除了要有Excel的样子外,还需要在细节上下功夫,才能真正提高用户的使用效率。

        我们认为,支持类Excel报表设计的设计器,至少应该具备以下功能:

    • 单元格的命名

        Excel中单元格是用单元格在横、纵向所处的位置来命名的。如果另搞一套命名机制,一方面很麻烦,另一方面在表达式编辑时会带来一些不便。

    • 单元格的基本属性

        包括单元格中数据的字体、大小、颜色、边框、前景色、背景色等等, 整行 、整 列、 整表修改编辑风格,支持格式刷等。(这是最基本的要求!)

    • 单元格内容的编辑

        表达式的写法应该与Excel一致,如“=sum( A3+B5 )”。插入、删除行列时,表达式可以自动变换,无须手工修改。

        当单元格中的内容/表达式较长、在格子里显示不下,在工具栏上有个编辑栏,可以完整地显示当前格的内容。

    • 自定义函数

        提供大量常用函数,并留有接口以便于添加用户自己的函数。

    • 导入导出Excel文件

        用户一般都有Excel的表样,对统计运算后的报表也习惯将其导出到Excel,提供Excel文件的导入/出也是一个必不可少的功能。

报表工具的发展历史

        从我们对报表软件多年的研究来看,我们认为在国内的报表需求和工具的发展大概可以分为以下几个阶段:        信息化的初期阶段,计算机作为一种新的生产工具,其主要功能是文字输出,如文件打印、表格输出等,相比较手工方式而言,工作效率大大提高。这个时期,用于报表生成的软件主要是WPS表格、CCED、Excel等文字处理工具,这些工具仅仅是将手工绘制报表的方式改为电子处理方式,未涉及到报表数据的集中、共享等处理。更确切地说,这个时期还没有真正意义上的报表工具。        随着信息化程度的不断提高,C/S应用方式逐渐成熟,出现了很多报表工具软件,最著名的当属水晶报表和PB的DataWindow。水晶报表在上世纪一直被微软OEM,成为VB的内置报表工具,在微软的强大支持下,VB庞大的用户群为水晶报表培养了众多应用人员并积累了大量成功案例,从而产生了世界第一(用户量)的报表工具。DataWindow 是 PB 中获取专利技术的控件,它对数据的处理方法相当简洁,能处理各种显示格式,快速的报表制作能力深受PB开发者的喜爱。

        这些软件的基本特征是单数据源、条带式(BAND)分组统计模型,通过控件拖拽方式绘制报表,在不编码的情况下能完成简单地行式(分组)报表和单片交叉报表,数据集中在数据库中,可以共享。

        但这一时期的用户需求已经跟前一阶段的需求大为不同――用户希望放在数据库中的数据能以自己熟悉的方式展现(复杂的表样、统计运算等),而这些报表软件的数据模型源于国外的报表习惯,解决复杂表样的方法并不好,复杂的统计运算也要求开发人员编写大量的程序代码,导致报表开发时间太长,后期的维护工作量也很大。

        随着B/S应用逐步取代C/S,市场上对Web报表的要求越来越强烈,C/S时期的报表工具纷纷进行了若干改进与加强,普遍支持B/S结构,许多新的报表软件也如雨后春笋一样冒了出来。这些工具大都是对开源软件进行包装改造,基本上有两种流派,一类来自于 FastReport这种基于Delphi的软件,通过控件方式实现Web报表,进而将报表计算移至服务器上进行,再改进为支持Linux;另一类是来自于Jasper的基于Java的开源软件。这些工具的整体思路还是沿袭了C/S时的方式,仍然是传统的分组报表的模式,仍然无法解决表样和大作量的代码编写问题。
    
  复杂报表的制作已经成了这些工具挥之不去的阴影,成了很多程序员的噩梦。
    
  在报表工具的发展过程中,还有一类特殊的表格式产品,最著名有Formula1和华表。这种类Excel 的工具,展现能力非常强,但是因为没有数据模型,导致其数据处理能力几乎为零,程序员需要按格编写代码往里填数。相比较分组式报表工具,类Excel工具能彻底解决复杂报表的样式问题,所以在实际应用中它一直是与分组报表互补的一类产品。
    
  面对这种问题,润乾公司提出了全新的数学模型,开发出了新一代的web报表软件――快逸报表,既解决了复杂报表表样的问题,也解决了报表单元格与数据字段之间的弱关联性,能够比较完整地满足各种JAVA报表的需求,开发效率与运行效率也高出传统工具数倍。