`
adm889486
  • 浏览: 37401 次
  • 性别: Icon_minigender_1
  • 来自: 绵阳
社区版块
存档分类
最新评论

JSP报表打印技术(6)——iReport和JasperReport组件

阅读更多
iReport和JasperReport组件是完全的开源项目,是当今世面上比较流行的制作报表工具,它们的优势不仅仅因为是开源项目,还由于高性能,友好的人性化设计界面,使得报表变得不再千篇一律,适用于多种数据源,可以导出多种文件格式,例如HTML、PDF、Excel等文件格式。
iReport和JasperReport组件最主要能在设计时使数据和设计分开,实现Web报表的分页打印,分组合计,变量加减处理,输出格式化,用户须按照编写的规则编写一个XML,然后得到用户所要的报表文件。
IReport组件下载地址是http://ireport.sourceforge.net,本书提供的版本是iReport-2.0.0,读者可自行下载最新版本,下载后安装,目录中会有一个名为"iReport.bat"的批处理文件,双击运行它,如图6.2所示。

若在JSP中使用iReport制作的报表需要另一个组件支持,这个组件就是JasperReport组件。
JasperReport下载地址是http://jasperreports.sourceforge.net ,JasperReport是一个灵活、功能强大的报表产生工具,可以以PDF、HTML或XML等多种形式产生报表,并支持CSV、XLS等格式报表,该引擎由Java编写,支持多种形式应用程序产生动态报表。JasperReport是按照一个预定义的XML文档来组织报表的数据,这些数据来源多样,包括关系型数据库、Java容器对象等。
首先简要介绍一下iReport组件的用法。
(1) 单击New Document创建一个新报表(也可以选Report Wizard报表向导来生成报表),也可以单击图标,来新建报表。
添写报表属性,在“报表名称”输入报表名字,在"预设尺寸"区内选择所要用的纸张及尺寸,在这里选择默认参数,可以修改"i18n"选项卡中的“XML 编码”,默认参数为"UTF-8"(如果认为有必要可以手动输入"GB2312"),,然后单击OK按钮。

(2)设置数据源。
首先把SQL Server 2000连接Java的驱动包放入iReport组件所在目录的lib中,这样iReport组件才可以使用数据源,单击菜单"Data",选中"连接/资料来源",单击"New"设置数据源,弹出对话框,
设置连接属性,其中有JavaBean、XML、JDBC等数据源,在这里选择JDBC数据源,输入数据源名称"Name",可以任意输入名字。在"JDBC Driver "下拉列表框中选择数据库连接驱动,选择Java连接SQL Server 2000驱动,连接JDBC的URL,。在"Server Address"输入框中输入服务器地址。在"DataBase"输入框中填写数据库名字。以及填上登录数据库的用户名"UserName"和密码"Password",然后单击密码输入框中边上的"Save Password"保存密码,如果不保存,每次执行报表时都会弹出要求输入连接数据库的用户名密码的对话框。
单击"Test"按钮,如果测试成功后会弹出对话框, 否则就会弹出连接错误对话框,这时就要检查的设置参数是否正确。

(3)iReport的中文处理。
iReport中文处理与iText组件相同,需要一个亚洲语言包"iTextAsian.jar"放到iReport目录下的lib目录中;修改报表的"PDF Font Name"将其改为"STSong-Light",再则是修改"PDF Embedded PDF Encoding" 改为"UniGB-UCS2-H(Chinese Simplified)" ,这样就可以解决iReport的中文问题。      
(4)报表编译时产生NoClassDefFoundException异常。
在代码处理JasperReport时出现该异常,是因为在引用JasperReport的一些jar文件不完整,处理方式是将JasperReport目录下的Demo\samples\Webapp\WEB-INF\lib\所有的jar文件,全引用了,以防不测,但会有一些不必要的包被引用了,读者可以自己将不必要的jar包去掉。
(5)另存为PDF时出现UnisupportEncodingException异常。
这是因为没有改变"PDF Font Name"应改为"STSong-Light"所致。
(6)iReport把xml文件编译成jasper文件。
单击图标,进行编译,把*.jrxml编译成*.jasper文件,同时显示报表内容,但有一点需要说明,如果在JSP中使用*.jasper时,手动编译出的*.jasper不能应用到JSP中,需要使用JasperReport类库中的JasperCompileManager类中的compileReportToFile()静态方法实现编译,如下述代码所示。
JasperCompileManager.compileReportToFile(*.jrxml,*.jasper)
(7)设置iReport的输出格式。
在前面曾提到过iReport可以以多种格式进行输出,如PDF,HTML,XML,XLS,CVS等文件格式,选择iReport菜单栏上的“建立”,可以看到缺省格式是“JRViewer”预览,这是iReport自身带的PDF格式预览,读者可以根据自己的需要选择报表输出格式,选择其他格式的预览,系统会以这种格式保存到磁盘中。保存位置读者也可以选择,在iReport菜单栏中选择Options,在其中选择Compiler标签,选择编译好的文件以及各种形式的报表保存位置,
(8)使用SQL语句查询。
大家都知道,数据查询必须要有查询语句,特别是综合查询时可能SQL语句会复杂一些, iReport组件可以使用查询语句输出报表,在菜单"Data"下选择“报表查询”项,添入查询语句,
单击"Save query"生成SQL脚本存入磁盘。如果需要在SQL语句中使用参数,例如以“名称”进行模糊查询,传递的参数为name,那么期望的SQL语句可能是下面这个样子。
Select * from users where name like ‘%name%’
其实在iReport组件中也可以很容易实现, Select * from users where name like '% $P{name}%’?,$P{name}是接下来要说明的参数。
(9)在iReport中设置参数
添加参数,读者可以右击Document下的Parameters,单击"Add",选择"Parameter",打开“添加参数”对话框,
添加参数名称,选择参数类型,设置好后,单击"OK"按钮,如果想在JSP中为名为"name"的参数赋值,需要引用下面的程序代码:
Map parameters=new HashMap();
parameter.put("name","p");
(10)报表的动态对象变量、参数、字段。
在使用iReport的过程中会碰到很多与变量(Variables)、参数(Parameters)、字段(Fields)有关的内容,现在介绍这些对象的使用和意义。
字段(Fields):是数据库抽取出来的,希望在报表中出现的数据库内容。例如一个ID的所有值为$F{ID}。
参数(Parameters):这是给报表的提供入口,例如希望在报表被解释的时候提供where语句的条件值,那么就可以使用参数(Parameters),$P{ parameterName }。
变量(Variables):这是报表中一些逻辑运算的表现,例如统计值,$V{ variablesName }。
每种对象的定义格式如每个对象的后面说明。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics