1. JasperReport 报表文件视图化生成工具iReport。
iReport做为一个生成JasperReport的视图工具,和我们是使用的大多数报表创建工具没有太大的差别,都是拖控件,搭出报表的样子,和水晶报表差不多。但是iReport有一个不同的地方,它的存储文件是是一个.jrxml的文件,是一个纯xml文件,编译后会产生一个.jasper的文件,这两个文件,在构建报表的时候都是需要的。
note:
1. 拖完页面,编译一下,可以发现新建的文件中的一些错误,例如 页面中使用的值是否在dataSource的Fields中定义。
2. JasperReport 中有一个非常简单的dataSource:net.sf.jasperreports.engine.data.JRBeanCollectionDataSource可以使用。
它有一个构造方法,可以传入一个集合来产生这个dataSource。
例如:new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{collectionList}) 就是建立一个以collectionList作为数据的数据源。在report中我们就可以使用$F{Field}(是collectionList<Bean> Bean中的属性)来得到List中每个Bean的数据了。
2.JasperReport 生成report
// 编译.jrxml文件
JasperCompileManager.compileReportToFile("testJasperReport.jrxml"),
context.getRealPath("testJasperReport.jasper"));
// 加载jasper
File reportFile = new File("testJasperReport.jasper");
JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());
// 填充Report parameters 是一个Map,new net.sf.jasperreports.engine.JREmptyDataSource()表示我们不需要传入是个空DataSource
// 将数据和xml组合,生成需要的打印文件
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new net.sf.jasperreports.engine.JREmptyDataSource());
// 将jasperPrint输出到html页面上
JRHtmlExporter exporter = new JRHtmlExporter();
request.getSession().setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,
jasperPrint);
exporter.setParameter(JRExporterParameter.JASPER_PRINT,
jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_WRITER,
out);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,
"image?image=");
// 设置分页
exporter.setParameter(JRHtmlExporterParameter.BETWEEN_PAGES_HTML,
"<br
style=‘page-break-before:always;‘>");
System.out.println("jasperreports
html print stop");
exporter.exportReport();