JasperReports⼊门详细步骤
JasperReports报表⽣成的基本步骤:
1.扩展名为.jrxml的⽂件为标准的xml⽂件,该⽂件定义了报表的格式和
数据构成。可以通过jasperReports的“黄⾦搭档”iReport以可视化的⽅式⽣成并编辑这个⽂件。
2.jrxml⽂件经过JasperReports API 编译后将⽣成扩展名为.jasper的⼆
进制⽂件。
3.可以调⽤JasperReports API针对jasper⽂件进⾏数据和参数的填充,
⽣成扩展名为.jrprint的⽂件。
4.调⽤JasperReports API可以将jrprint⽂件最终导出成PDF、Excel、
Html等各种格式的⽂件。
下⾯将采⽤iReport + JasperReports ⽣成如下图的PDF格式报表,表格中的数据来源于数据库,是在固定格式报表基础上,由JasperReport填充得到的。整个报表的⽣成过程需要两个步骤:
1.使⽤iReport⽣成规定报表格式和数据构成的jrxml⽂件。
2.调⽤JasperReports API 编译、填充并导出固定格式的报表。
⼀、⽤iReport⽣成报表⽂件(.jrxml)
开源⼯具iReport⽤于定义报表的格式,可以从其官⽅⽹站下载
www.doczj/doc/6b5f642be2bd960590c677bc.html /cap3.html
本应⽤所使⽤的是iReport-1. 安装程序,启动后,按照向导即可安装(要确认系统中装有1.4版本以上JDK)。下⾯的操作⼤致分为12个步骤:
步骤1:安装成功后启动该程序,将显⽰如下画⾯,选择菜单“File->New Document”新建报表⽂档,可在弹出的对话框选择报表的⼤⼩、版式等。
步骤2:按照默认版式创建报表,选择菜单“Data->Connections/Datasources”指定数据库连接或数据源,在弹出的对话框中单击“New”,并在弹出的对话框中指定数据库的连接参数(驱动类、URL、⽤户名和密码等)iReport通过JDBC 连接数据库,要确认相应数据库的驱动类置于iReport安装路径的lib⽂件夹下。
步骤3:选择菜单“Data->Report Query”在弹出的对话框中输⼊SQL语句:
select id, name, salary from emp,选中所有查询的字段后,单击“OK”。
该SQL语句查询的数据为将来报表中要显⽰的数据,除了⽤SQL语句,这⾥还⽀持HQL(Hibernate Query Language)等其他多种查询⽅式。这样的操作将在报表的xml⽂件中⽣成如下定义:
emp]]>
其中元素定义了⽤于获取数据的查询语句,将来JasperReports将通过这样的⽅式查询数据。元素定义了对应于查询结果的字段名称和类型,将来报表中可以使⽤$F{字段名称}获取并显⽰查询得到的数据。
步骤4:选择菜单“Format->Styles”⽤于指定报表元素将使⽤的样式,这⾥的Style类似于HTML中CSS样式,⼀个样式规定了字体、前景⾊、背景⾊等显⽰特征,样式创建后,可以将其施加于特定的报表元素。为了便于维护,样式之间可以实现继承关
系,⼦样式将拥有⽗样式的⼀切特征。在弹出的对话框中单击“New”指定⼀个名为default的样式(通过Style name指定样式名称),指定
其字体、颜⾊等特征。
步骤5:继续指定⼀些其他的样式,如⽤于表头字体的“灰底⽩字”的样式header,将这些样式的Parent style值指定为刚刚创建的default样式,即指定default 是所有样式的⽗样式,这样可以通过编辑default样式指定⼀些所有样式共同的特征。
步骤6:单击“Edit->->Static Text”或使⽤⼯具栏的按钮,在报表页⾯中添加静态⽂本框,将这些⽂本框置于合适的位置并填⼊⽂字,作为表头,通过右边的Element properties 视图将这些⽂本框的Style(样式)置为⽅才创建的header。
步骤7:打开右边Library视图的Fields图标,可以看到id,name,salary三个标识,这三个标识对应在“步骤3”中创建的“查询字段”,⽤⿏标直接拖动这些字段到报表页⾯的适当位置,这样的操作将在报表xml⽂本中产⽣形如:
的⽂本。其中$F{字段名称}表⽰该字段的查询
值。
步骤8:在Library视图中单击右键,在弹出的快捷菜单中选择
“->Parameter”,⽤于创建参数,在弹出的对话框中指定参数的名称和数据类型。
步骤9:在Library视图的Parameter下可以看到刚刚建⽴的名为“Title”的参数,⽤⿏标拖到其到指定位置,并适⽤在步骤5中创建的title样式,此处为报表的标题。这样的操作将在xml⽂件中产⽣如下内容:
其中的$P{Title}对应Title参数的值,将来将通过JasperReports API 对“Title”参数赋值。
步骤10:选择菜单“File->Save”或单击⼯具栏按钮保存⽣成的xml⽂件,注意,⽂件的扩展名⼀般为jrxml,该⽂件定义的报表的格式及其数据构成。
步骤11:可以通过iReport的编译⼯具对⽣成的报表⽂件进⾏测试,单击⼯具栏的按钮编译报表⽂件,如果⽆误可单击⼯具栏的按钮将显⽰报表⽣成
的样式,如果单击⼯具栏的按钮,iReport将会查询数据显⽰填充数据后的报表,注意:这⾥的报表的标题显⽰null是因为没有对报表的“Title”赋值,这⾥仅仅是通过iReport⼯具对⽣成的报表进⾏测试,下⾯将通过JasperReports API以编程的⽅式编译、填充并导出报表。
步骤12:为了是将来导出的PDF格式报表⽀持中⽂显⽰,可以⼿⼯的编辑iReport ⽣成的xml⽂件,在定义default样式的位置加⼊⽀持中⽂的PDF字体和编码设置:
name="default"
isDefault="true"
mode="Opaque"
pdfFontName="STSong-Light"
pdfEncoding="UniGB-UCS2-H"
/>
由于其他样式继承了该样式,从⽽⾃动拥有的⽀持中⽂的设置。
⼆、⽤JasperReports编译、填充,并导出报表
可以从JasperReports的官⽅⽹站下
www.doczj/doc/6b5f642be2bd960590c677bc.html /jaspersoft/opensource/business_intelligenc e/jasperreports/
载JasperReports的发⾏包,本应⽤使⽤的版本是jasperreports-1.2.3,将其发⾏包中dist⽬录下的:jasperreports-1.2.3.jar以及lib⽬录下的如下jar ⽂件:
poi-2.0-final-20040126.jar
jdt-compiler-3.1.1.jar
itext-1.3.1.jar
commons-beanutils-1.5.jar
commons-collections-2.1.jar
commons-digester-1.7.jar
commons-javaflow-20060411.jar
commons-loggin-1.0.2.jar
复制到应⽤的类路径(CLASSPATH)下。
为了⽀持中⽂的PDF报表导出,还需要有iTextAsian.jar⽂件,该⽂件可以从
www.doczj/doc/6b5f642be2bd960590c677bc.html /itext/iTextAsian.jar?download处下载。
注意,由于要连接数据库,还需要将数据库的JDBC驱动类包复制到类路径下。
编译报表(.jrxml -> .jasper),JasperCompileManager类的静态⽅法compileReportToFile⽤于编译报表⽂件第⼀个String参数为待编译的报表xml ⽂件,第⼆个String参数为编译后的⽂件名。代码如下所⽰:
public void testCompile() throws Exception {
www.doczj/doc/6b5f642be2bd960590c677bc.html pileReportToFile("test.jrxml", "test.jasper");
}
填充报表(.jasper -> .jrprint),JasperFillMangager类的静态⽅法fillReportToFile⽤于实现对⼆进制报表⽂件的填充,该⽅法有三个参数:
1.⼀个参数为String类型,表⽰待填充的⽂件名。
2.第⼆个参数为Map对象,存放⽤于填充报表参数(对应与报表中的$P{参
创建html文件
数名称})的键值对,下⾯代码中map对象中存有键值对{Title=员⼯列
表},则对应报表中的$P{Title}位置将被填充为“员⼯列表”。
3.第三个参数为数据库的连接(java.sql.Connection)对象,⽅法进⾏数
据填充时需要⽤到该连接实现查询。
代码如下所⽰:
public void testFill() throws Exception {
Map map = new HashMap();
map.put("Title", "员⼯列表");
JasperFillManager.fillReportToFile("test.jasper", map, getConnection());
}
private Connection getConnection() throws Exception {
Class.forName("sql.jdbc.Driver");
Connection con = Connection(
"jdbc:mysql://localhost:3306/test", "root",
"root");
return con;
}
导出报表,JRPdfExporter类⽤于将.jrprint格式的报表导出Pdf格式,类似的类还有:
JRXlsExporter 导出成Excel⽂件格式
JRHtmlExporter 导出成HTML⽂件格式
JRCsvExporter 导出成Csv⽂件格式
JRRtfExporter 导出成RTF⽂件格式
JRTextExporter 导出成纯⽂本⽂件格式
JRXmlExporter 导出成Xml⽂件格式
JasperPrint类⽤于封装.jrprint⽂件数据。JRPdfExporter的setParameter ⽤于指定导出属性,如:需要到处的JasperPrint对象、导出⽂件的⽂件名等。
JRPdfExporter的exprotReport⽅法将实现报表的导出产⽣相应的PDF报表⽂档。
public void testExportToPdf() throws Exception {
JasperPrint jp = (JasperPrint)
JRLoader.loadObject("test.jrprint");
JRPdfExporter exporter = new JRPdfExporter();
//指定要导出的jrprit数据
exporter.setParameter(JRExporterParameter.JASPER_PRIN T, jp);
//指定导出⽂件的⽂件名
exporter.setParameter(JRExporterParameter.OUTPUT_FILE _NAME, "test.xls");
//实现报表的导出
}
下⾯两个⽅法⽤于演⽰Excel格式和HTML格式报表的导出。
public void testExportToExcel() throws Exception { JasperPrint jp = (JasperPrint)
JRLoader.loadObject("test.jrprint");
JRXlsExporter exporter = new JRXlsExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRIN T, jp);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE _NAME, "test.pdf");
}
public void testExportToHtml() throws Exception { JasperPrint jp = (JasperPrint) JRLoader.loadObject("test.jrprint");
JRHtmlExporter exporter = new JRHtmlExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRIN T, jp); exporter.setParameter(JRExporterParameter.OUTPUT_FILE _NAME, "test.html"); portReport();
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。