日期:2014-05-17  浏览次数:20877 次

JasperReports终极指南 第4章 处理生成的报表

4 处理生成的报表:
报表填充后的输出文档是一个JasperPrint对象。JasperPrint对象可以被序列化保存、在网络上传输、用内置的查看器组件来查看,打印或导出为更常见的文档格式:pdf、html、rtf、xls、odt、csv、xml。

4.1 加载并保存生成的报表
4.1.1 JasperPrint对象被序列化并保存到硬盘后,通常为一个*.jrprint文件。

4.1.2 使用JRSaver类可以把JasperPrint对象保存为*.jrprint文件或byte流。使用JRLoader类可以把*.jrprint文件或byte流加载为JasperPrint对象。

4.1.3 JRLoader类中包含了从文件、URLs、输入流、或classpath资源中加载序列化对象的各种方法。它的loadObjectFromLocation(String)方法会根据所提供的String位置,尝试从URL、文件名、或classpath资源中加载对象,如果这些都失败了,就会抛出一个错误。

4.1.4 通过JRXmlExporter可以把JasperPrint对象导出为XML文件,建议使用的文件扩展名为*.jrpxml。通过JRPrintXmlLoader可以把XML文件解析为JasperPrint对象。

4.2 查看报表
4.2.1 JasperReports提供的JRViewer是一个基于Swing的可视化组件,可以用于查看JasperReports生成的报表(JasperPrint对象),也可以用于查看通过内部的XML exporter生成的XML格式的报表。可以通过继承JRViewer来定制满足特定应用程序需求的查看器。例如,你可以在现有工具栏上添加或删除按钮。

4.2.2 JasperReports还提供了一个简单的Swing应用程序JasperViewer,用于查看保存在硬盘上的*.jrprint格式的报表,或者查看由默认的XML exporter生成的jrpxml格式的报表。

4.3 打印报表
4.3.1 可以使用依赖于之前的Java2打印API的装饰类JasperPrintManager,来打印JasperReports生成的文档(JasperPrint对象)。在JasperPrintManager公开的各种方法中,有些允许打印整个文档、单个页面或页面范围、显示或不显示打印对话框。
以下是打印整个文档且不显示标准打印对话框的示例:
JasperPrintManager.printReport(myReport, false);
以下是在显示标准打印对话框后,打印从第5页到第11页文档的示例:
JasperPrintManager.printPages(myReport, 4, 10, true);

4.3.2 JRPrintServiceExporter实现类使用JDK 1.4引进的Java打印服务API,使应用程序可以使用搜索到的适合网络打印机名或页面大小等属性的打印服务器来打印JasperReports报表。

4.4 导出报表
4.4.1 在net.sf.jasperreports.engine.export包中可以找到exporter的各种实现类,用于导出pdf、html、rtf、xls、odt、csv、xml格式的报表。

4.4.2 JasperReports中有一个装饰类JasperExportManager,可以用于把报表填充后生成的文档(JasperPrint对象)导出为pdf、html、xml格式。
以下是把报表导出为html格式的示例:
JasperExportManager.exportReportToHtmlFile(myReport);

4.4.3 如果要把报表导出为JasperReports不支持的其它格式,你必须实现JRExporter接口,或继承相应的JRAbstractExporter类。