1.2 计算机上的报表与报表应用程序
可以利用计算机处理数据和界面设计的功能来生成、展示报表。计算机上的报表的主要特点是动态化。 已经有各种各样的计算机报表设计工具,它们一般提供格式设计和数据填充等功能。广义地讲,EXCEL、WORD、甚至写字板都可以算作报表设计工具,但是它们没有定义专门的报表结构,也无法实现报表格式和报表数据的动态决定,无法实现计算机报表的“动态化”特性,也就是说不能用它来开发“报表应用程序”,所以它们一般不能视为报表设计工具。 而所谓报表应用程序,指的是能够在运行时动态地决定报表格式和报表数据的应用 程序,它必须要实现数据格式和数据内容之间的分离,也就是报表和数据源之间的分离。
一个报表应用程序可以定义为: 报表应用程序 = 报表 + 数据源 + 报表的具体应用。
报表由报表设计工具来设计。报表设计工具定义报表格式,以及报表内容与数据源之间的映射。具体地说就是定义报表的大小、形状和各个Band的内容。比如用设计报表的大小使它适于A4纸型,比如把报表脚的内容设为当前日期,或者定义Column Header 设为与数据库中字段的名字,在ColumnFooter Band中计算合计等等。常用的报表工具有应用于微软平台下的CrystalReport,用于Java平台下的JReport,StyleReport,Jasper Report等等。
数据源代表报表所显示数据的来源。数据源并非某个具体的数据库或表。一般来说,报表中的数据源可以理解为一个ResultSet,典型的情况下,它是执行某个SQL查询后得到的结果。ResultSet除了来自关系数据库,也可以取自XML数据源,或者自定义的任何一种数据源。因此,需注意“Datasource”在不同的上下文里有不同的指代,有时它指Query,有时指ResultSet,有时指底层的数据库/数据源实体。
报表的具体应用指的是:
从信息系统设计的角度来说,
(1) 怎么样让用户在程序运行时自定义报表数据的内容(比如是得到
今年的税务报表还是去年的)
(2) 怎么样把报表提交给用户(是以WEB方式展现,还是让用户保
存为EXCEL文件)
(3) 采取什么样的系统架构(是桌面应用程序,还是C/S或者B/S应
用程序)
这几个问题都要通过程序设计的途径来解决,并且解决的方案要到报表设计工具的制约。比如说如果使用Jasper Report技术,由于JasperReport是单纯的报表设计工具,开发者必须手工编写访问报表的程序。而如果使用JReport技术,由于JReport的开发商提供了一个作为独立WEB服务器的JREntSrver,这个服务器可以部署报表并自动生成访问报的表的页面,这时就可以减少很多代码编写的工作量。
为帮助理解,下图给出了一个非常简单的基于WEB的报表应用程序。它用于按书类汇总书籍信息。
作者对报表和报表应用程序的定义或许并不严谨,但亦不失为一种有意义的框架。脑中有了这个架构,可以为与报表相关的开发提供引导作用。下面就以一种具体的报表设计技术------JasperReport为例,介绍这个框架的具体实现。
2、 JasperReport及其他
基于JAVA平台的报表设计工具有很多,有的为商业软件,有的则是开源软件。在
所有的开源软件中,JasperReport的应用最广泛。本章先介绍JasperReport的基本要领,并给出学习JasperReport的辅助材料,然后介绍用于辅助JasperReport开发的GUI工具Ireport。最后通过一个的实例来介绍怎么用JasperReport+Ireport+JSP开发完整的WEB报表应用程序。 2.1
报表设计工具概述
正如前一章所说,除了界面设计,报表设计工具的另一个功能就是告诉应用程序怎么样填充Title、Page Header等Band。对Rows Band,报表设计工具通过定义报表数据与数据源(ResultSet)之间的对应关系来确定怎么样填充Rows Band。对其他的几个Band,如果Band的内容是不变的(static),则可用设计工具直接写出这些内容。然而在多数情形下,其他Band和Rows Band一样,内容是动态变化的(即运行时才确定的)。举例来说,一个报表会在某个Footer Band显示汇总信息(如“合计”),它的值在设计阶段确定;一个报表可能要求在表尾显示报表生成的日期,它的值也是动态的。
概括起来,一个报表设计工具的功能有以下几点: 1、 报表的外观、布局设计
2、 设置报表数据与数据源数据之间的对应关系,并要求按用户输入的不同参数得到不
同的ResultSet。
3、 提供一种灵活性,以使开发者能动态确定各个Band的内容。
下面就以JasperReport为例,看看一个报表设计工具是怎样实现上述几种功能的。
2.2 用JasperReport定义报表的各个Band
JapserReport用一个XML文件定义一个报表。手写一个Jasper Report,就像写像一个配置文件。
JasperReport的对报表结构的定义与前文所说的“标准定义”略有不同。它把Rows称为Detail,将ReportFooter称作Summary,并增添了一个Backgroud 和一个 LastPageFooter。 对这两个新Band可以顾名思义,不必详细介绍。
一个Jasper Report源码的基本结构如下所示:
………….
parameter:代表报表的查询参数。比如上一章所举例子中的“书籍类型”。
queryString:代表从数据库取数据的Query。一个queryString中一般会有若干个parameter。 field:代表报表数据的字段。
variable:变量,意即它在报表的不同位置、在报表运行的不同时刻都会有不同的值。它一
搬用来实现各个Band内容的动态显示
Report源码举例:下面的代码片断节选自上例报表的XML源码,注意其中的高亮部分。
//JasperReport根元素
class=\
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库JasperReport详解 - (1) - 图文(2)在线全文阅读。
相关推荐: