简单的说:报表就是用表格、图表等格式来动态显示数据,可以用公式表示为:“报表= 多样的格式 + 动态的数据”。
在没有计算机以前,人们利用纸和笔来记录数据,比如:民间常常说的豆腐帐,就是卖豆腐的每天将自己的卖出的豆腐记在一个本子上,然后每月都要汇总算算。这种情况下,报表数据和报表格式是紧密结合在一起的,都在同一个本子上。数据也只能有一种几乎只有记帐的人才能理解的表现形式,且这种形式难于修改。
当计算机出现之后,人们利用计算机处理数据和界面设计的功能来生成、展示报表。计算机上的报表的主要特点是数据动态化,格式多样化,并且实现报表数据和报表格式的完全分离,用户可以只修改数据,或者只修改格式。
Excel、Word等编辑软件,数据库软件和报表软件之间的区别
EXCEL、WORD等编辑软件:它们可以做出很复杂的报表格式,但是由于它们没有定义专门的报表结构来动态的加载报表数据,所有这类软件中的数据都是已经定义好的,静态的,不能动态变化的。它们没有办法实现报表软件的“数据动态化”特性。
数据库软件:它们可以拥有动态变化的数据,但是这类软件一般只会提供,最简单的表格形式来显示数据。它们没有实现报表软件的"格式多样化"的特性。
报表软件,它们需要有专门的报表结构来动态的加载数据,同时也能够实现报表格式的多样化。
根据报表的绘制方式,报表工具大致可以分为SQL画布方式,Cell单元格方式和两者结合型:
- SQL画布方式报表工具的特点是将报表水平分割成若干个区域,在各个区域上放置报表组件,报表组件位置可以是任意的,各组件可以互相重叠。画布式报表工具的优点 是可以做到可视化数据绑定,组件位置自由。缺点是插入列、组件对齐困难,画表格线经常出现线与线之间的错开现象。这种报表只是很好的解决了"报"的问题, 但对于"表"的问题依然存在。比较著名的画布式报表工具主要有CrystalReport、FastReport等。
- CELL单元格式报表工具,是将报表看作是由一系列连续的单元格组成的区域。要改变报表组件(一般是文本或图形)的位置,只能通过改变行高列宽方式进行,组件之间 不能重叠,单元格可以合并。单元格式报表工具的优点是画线,插入列,多行列标题绘制非常方便,但格子中的动态数据绑定,往往需要手写公式来进行。这种报表 只是很好的解决了"表"的问题,但对于"报"的问题依然存在。F1BOOK是一款比较著名的单元格式报表工具。
- 两者结合型报表工具,融合上面两种报表工具的优点,使用户可以可视化地动态绑定数据,也可以象Excel一样来画线,从而大大提高了报表设计的效率。 FineReport是属于这种两者结合类型的报表。
报表类型 - com.fr.report.Report接口
为了更好的以多样的格式来显示动态的数据,FineReport提供了下面几种具体的报表类型。(下面所有类型的报表都实现了com.fr.report.Report接口):
分组报表 - com.fr.report.GroupReport
这是最基本,最常用的报表类型. 可以对数据源的数据进行分组, 排序, 条件, 汇总, 求和, 求平均等等处理. 最重要的是它提供对超大量数据(支持数百万行以上数据)的快速分页显示和打印。
复合报表 - com.fr.report.CompositeReport
复合报表就象一个容器,可以在其中放置一个或多个复合元素(分组表和交叉表是FineReport预先提供的复合元素,当然也可以通过API创建新的复合元素)。它可以非常容易的实现对多个数据源的支持。不过复合报表有个缺点:当数据量非常的大的时候,报表分页的速度会慢些。
- 分组表:分组表是FineReport内置的一种复合元素,需要被加到复合报表中显示;它的功能和分组报表的功能类似,也可以对数据源进行分组、排序、条件等等处理,它的缺点是当数据源包含超大量数据的时候,分页显示和打印的速度会比较慢。
- 交叉表:交叉表是FineReport内置的一种复合元素,需要被加到复合报表中显示;它是列数和行数都不固定的报表,列和行的信息完全来自数据源中某列的汇总,可以定义交叉表的列头、行头,以及显示的数据信息。
电子表格 - com.fr.report.SpreadSheet
电子表格只提供类似于Excel的格子功能,和对应的Swing控件com.fr.report.gui.SpreadSheetPane一起做为电子表格控件(SpreadSheet是SpreadSheetPane的数据模型),由于电子表格相对分组报表和复合报表来说,稍简单一些,完全用程序的方式来创建一些报表时,常常用电子表格类。
同时它还有另外一个比较广的应用:由于Swing本身提供的JTable控件功能太弱了, 而实际应用中常常需要一个功能更强大的Swing表格控件,这个时候就可以试试这个SpreadSheetPane电子表格控件。它除了提供基本的列, 行的表格功能外,还提供图表等悬浮元素的功能,自动分页打印, 从Excel文件输入和输出到PDF, Excel等文件当中的功能, 等等...在FineReport自带的Demo中,我们已经利用这个电子表格控件实现了财务软件需要用到的记帐凭证等功能。