itest报表模块设计文档Word格式.docx

上传人:b****2 文档编号:14132118 上传时间:2022-10-19 格式:DOCX 页数:39 大小:2.96MB
下载 相关 举报
itest报表模块设计文档Word格式.docx_第1页
第1页 / 共39页
itest报表模块设计文档Word格式.docx_第2页
第2页 / 共39页
itest报表模块设计文档Word格式.docx_第3页
第3页 / 共39页
itest报表模块设计文档Word格式.docx_第4页
第4页 / 共39页
itest报表模块设计文档Word格式.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

itest报表模块设计文档Word格式.docx

《itest报表模块设计文档Word格式.docx》由会员分享,可在线阅读,更多相关《itest报表模块设计文档Word格式.docx(39页珍藏版)》请在冰豆网上搜索。

itest报表模块设计文档Word格式.docx

日期

作者

说明

1.0

1-7章

C

2007-11-27

宫云鹏

创建7章具体内容

2.0

U

2007-11-28

完善第6章、第五章第二节

3.0

2007-11-29

加入目录,并排版

说明:

类型-创建(C-create)、修改(U-update)、删除(D-delete)增加(A-add)

序言

在很多实际的项目里,报表都是其中十分重要的组成部分,例如把查询结果以报表的形式呈现出来。

这里所提到的报表可不是简单的二维表,而是拥有复杂表头的、多维的、可以在运行期从数据库中自动读取数据、可自动分页、拥有丰富的页面元素(图片,超连接等)、支持分组和交叉表、支持打印、最好还能导出到Excel或Word…...。

但是显而易见,报表功能越强大,提供的服务越丰富,其复杂度也就越提高,所以仅靠石器时代的手工方式生成报表是不能满足需要的。

所幸,目前我们所熟知的几款报表工具功能上足够强大,而且都附有很方便的报表生成工具。

它们分别是:

JasperReport(+iReport),BIRT(+eclipse),水晶报表(+eclipse,JBuiler等等)。

之所以提到这三种报表工具首先是因为他们都是开放源码的(CrystalReportForEclipse1.0已经开源了)。

既然不用考虑费用,那在我们的项目中到底选用哪一个呢?

对于水晶报表而言,虽然其在.Net平台上表现十分抢眼,但是在Java平台上,多数的实现都是要收费的(例如ForJBuilder版),而且其Eclipse插件的资源消耗十分惊人。

所以我选择了纯Java的报表工具JasperReport与iReport的组合。

但是关于JasperReport的文档相对匮乏,其官方文档还是要收费的,所我希望利用这篇文章展示如何利用这一强力组合来进行基于Web的报表开发。

在此将火力集中在如何在Web环境使用JasperReport报表和报表的导出功能等方面,相信在iReport的帮助下,上手会很快的。

编写目的

对jasperReport+iReport开发报表的比较详细的向导。

设计原则

能够作为单独的模块使用,符合MVC架构体系,能够和I-Test产品低耦合度集成。

一.jasperReport技术简介

报表生成流程

JasperReportAPI:

Jasperreports生成的报表文件的生命周期和一个普通的java类非常相似。

在java当中,有一个以.java为扩展名的源文件,内容按java语言的规则去写,源文件通过编译器编译生成一个.class文件,当class使用的时候,它以一个实例的形式通过java的解释器加载到内存当中。

同样,一个Jasperreports报表文件也有一个通过DTD定义的xml格式的源文件,当报表生成的时候会把这个xml格式的源文件编译成一个jasper类型的文件,jasper文件可以在我们的应用程序中被加载生成最终的报表。

1.JasperCompileManager

net.sf.jasperreports.engine.JasperCompileManager类。

 

使用这个类的几个静态方法即可完成对报表的编译工作(具体参见api文档)

编译完成后可以JasperCompileManager有两种处理方式:

1>

返回一个JasperReport对象

2>

在.jrxml文件所在的目录生成一个.jasper文件

这两种方式是由程序员自己选择的。

个人比较倾向使用.jasper文件,毕竟报表的结构不是每天都在改动,所以每次重新编译报表并不是很划算。

2.JasperFillManager

net.sf.jasperreports.engine.JasperFillManager类

这个类的作用是用数据填充报表。

它可以使用JasperReport对象也可以使用.jasper文件做为报表模板。

它同样有两种处理方式:

返回一个JsaperPrint对象。

在.jasper文件所在目录生成一个.jrprint文件

这个类使用net.sf.jasperreports.engine.JRDataSource接口的实现做为数据源。

3.JasperPrintManager

net.sf.jasperreports.engine.JasperPrintManager

net.sf.jasperreports.engine.JasperExportManager

这两个类的作用是打印、导出报表

他们使用JasperPrint和.jrprint文件做为输入。

二.iReport报表开发工具简介

iReport是一个开源项目,它使用Jasperreports来创建复杂的报表效果。

它100%使用Java语言编写。

iReport是开源报表软件JasperReport的可视化设计工具,Jasperreports是用LGPL(LGPL是GNULesserGeneralPublicLicense(GNU宽通用公共许可证)的缩写形式)提交的,因此使用Jasperreports时的局限性较小,这就意味着我们可以在我们的商业软件中不用去购买它的license而使用它。

1.Fields,Parameters,Variable

在jasperreport中有三种类型的对像可以用来保存数据:

Fields/Parameters/Variables.这三种对象可以用在某些地方的Expression中,通过一定的逻辑在报表生成的时候动态的更改某些值。

Fields/Parameters/Variables有类型的概念,它们的类型就是一个标准的Java的Object。

1>

Field

Field在JasperReports是专门用来组织记录。

Field的创建有多种途径可以实现,我们可以根据在jasperreports中各种类型的数据源来创建我们所需要的Field。

在对象的Expression里你可以使用下面的语法来引用一个field:

$F{fieldname}

2>

Parameters

Parameters通常是用来在打印的时候从程序里传值到报表里.也就是说parameters通常的是起参数传递的作用。

他们可以被用在一些特定的场合(比如应用中SQL查询的条件),

在JasperReports中Parameters的机制是允许用户通过应用程序传递参数致报表当中。

在jasperreort中的某个对象中的expression可以通过下面的语法来访问一个当前report中存在的parameter:

$P{parametername}

如果应用程序没有为报表中定义的parameter赋值,那么parameter将会取我们在定义它的时候设置的defaultvalue的值。

parameters是一个JavaObject,所以如果它的类型是Object类型,我们在其defaultvalue里写下面的表达式就是错误的:

0.123

你必须要创建一个Object,如:

NewDouble(0.123)

这种写法就是正确的。

3>

Variables

Variables是用来存储对某些字段计算后的结果,比如sum等。

我们可以在表达式中通过下面的方法来引用一个Variable:

$V{variablename}

VariableClassType:

variable也可以是任意一个Java类型,在下拉框里你可以看到大多数常用的类型,如java.lang.String等。

CalculationType:

一个计算类型可以用来计算结果。

当一个预先定义的值是“nothing”时,那它的意思是不做任何计算。

Jasperreports会根据指定的计算类型和从数据源中获取的每一条记录计算出结果,然后去更改variables的值。

做一个变量的计算意为着去执行一个表达式,如果计算类型为nothing,那么jasperreports将会根据variableexpression为variable赋值。

2.subdataset

在JapserReport中允许有多个数据集,主报表的主数据集,以及在交叉报表或者子报表的子数据集,主数据集只能有一个,但可有多个子数据集。

这些数据集只能单个使用,不能相互嵌套使用,但在子数据集中,可以使用参数引用主数据中的数据。

报表的生成是基于一个datasource(一个查询,一个java的collection或者一个xml)。

当你想要处理一个chart或一个crosstab时,这时可能上面的datasource就不行了。

一个subdataset可用来在报表里提供另外一种记录集。

你可能会使用一个subdataset用来填充一个chart或一个crosstab。

在一个报表里你可以有任意多个subdatasets。

一个subdataset可以有它自己的fields,variables,parameters,同时如果需要它还可以执行一个查询。

Dataset里的记录可以像主报表一样进行一次或多次分组。

在组里可以使用subdataset的variables。

一个subdataset通过一个叫“datasetrun”的选项和一个chart或一个crosstab关联。

点击菜单栏的”data”->

”Subdatasets”,

现在我们来创建一个新的Subdatasets,点击”new”->

”create”。

选择”Query”,编写Sql语句来查询数据集,这样一个subdataset就形成了,在接下来的Chart部分,我会结合Subdataset与Chart一起来举一个实例。

3.Chart

jasperreports使用jfreechart的最后版本,jfreechart是一个强大的chart生成工具。

Jasperreports现在支持Pie,Pie3D,Bar,Bar3D,XYBar,StackedBar,StackedBar3D,Line,XYLine,Area,XYArea,ScatterPlot,Bubble,TimeSeries,HighLowOpenClose和Candlestick多种类型图表。

下面,我给出一个实例,在Chart中引入Subdataset:

在主报表中只有一条统计所有记录总数的记录(selectcount(*)asemployeeCountfromemployee)。

第一步,创建一个新的空白报表

第二步,打开查询工具()同时插入下面的sql语句:

selectcount(*)asemployeeCountfromemployee

第三步,从library标签里拖动字段employeeCount到detailba

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1