我们最近将jasper报告整合到我们的系统中。现在我们可以通过标准方式用jasper报告向用户运行报告和显示结果,运行并向用户显示结果。
但在某些情况下,我们需要将结果保存到对象存储,并在请求时将其显示为文档。据我所知JasperPrint
是序列化对象。将报告结果保存为对象存储作为序列化对象不是一个好方法,因为我们经历了我们以前的报告工具。如果对象发生了更改,则序列化机制无法反序列化对象。
因此我们希望将jasper结果以xml格式保存到对象存储中,但我们找不到在JRViewer
中显示导出的xml的方法。
有没有办法将导出的xml转换为可视化表单?
答案 0 :(得分:1)
Jasper Report提供了两种方法来保存和加载填充的报告,JasperPrint
(注意:将导出的内容排除为pdf,xls ecc等其他格式,因为加载和导出到其他格式非常困难)。
礼貌@Robert Mugattarov,What is the difference between JasperReport formats?
.jrprint 是序列化的JasperPrint对象,即实际报告 实例,即已填充数据的模板。这个文件可以 被反序列化回JasperPrint对象。
.jrpxml 是一个人 可读的JasperPrint对象的XML表示,即XML 已填充数据的模板版本。这个文件可以 unmarshalled回到JasperPrint对象。
由于您不希望有序列化对象,因此保留的解决方案是xml中的jrpxml
格式。
保存并加载到jrpxml
的示例。
//Save JasperPrint to jrpxml (xml format)
JRXmlExporter exporter = new JRXmlExporter();
exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
exporter.setExporterOutput(new SimpleWriterExporterOutput(new File("myJasperPrint.jrpxml")));
exporter.exportReport();
//Load jrpxml to JasperPrint object
JasperPrint print = JRPrintXmlLoader.load("myJasperPrint.jrpxml");
//To show it in JasperViewer
JRViewer jrv = new JRViewer(print);
如果您需要减小文件大小,我建议您压缩/解压缩jrpxml
文件。