我们在前一章已经看到,如何打印和查看JasperReport生成的文档.在这里,我们将看到如何将这些报告转换或导出为其他格式,如PDF,HTML和XLS.提供了Facade类 net.sf.jasperreports.engine.JasperExportManager 来实现此功能.导出意味着将 JasperPrint 对象(.jrprint文件)转换为不同的格式.
以下代码(JasperReportExport.java)演示了JasperReport文档的导出过程. JasperExportManager提供了仅将报告导出为PDF,HTML和XML的方法.要导出为XLS格式,我们使用了类 net.sf.jasperreports.engine.export.JRXlsExporter .此代码生成以下三个文件 :
sample_report.pdf
sample_report.html
sample_report.xls
导出为其他格式
让我们写一份报告模板. JRXML文件(C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrxml
接下来,POJO文件的内容 C:\tools\jasperreports-5.0.1\test\src\com\it1352\ DataBean.java 如下给出 :
package com.it1352; public class DataBean { private String name; private String country; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } }
文件的内容 C:\tools\jasperreports-5.0.1 \ test \src\com\it1352\ DataBeanList.java 如下所示 :
package com. it1352; import java.util.ArrayList;public class DataBeanList { public ArrayListgetDataBeanList() { ArrayList dataBeanList = new ArrayList (); dataBeanList.add(produce("Manisha", "India")); dataBeanList.add(produce("Dennis Ritchie", "USA")); dataBeanList.add(produce("V.Anand", "India")); dataBeanList.add(produce("Shrinath", "California")); return dataBeanList; } /** * This method returns a DataBean object, * with name and country set in it. */ private DataBean produce(String name, String country) { DataBean dataBean = new DataBean(); dataBean.setName(name); dataBean.setCountry(country); return dataBean; }}
写一个主类文件 JasperReportFill.java ,它获取java bean集合从类(DataBeanList)并将其传递给JasperReports引擎,以填充报告模板.将其保存到 C:\tools\jasperreports-5.0.1 \\\\\\\\\\\\\\\\\\\\\\\\\\\
package com.it1352; import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import net.sf.jasperreports.engine.JRException;import net.sf.jasperreports.engine.JRExporterParameter;import net.sf.jasperreports.engine.JasperExportManager;import net.sf.jasperreports.engine.JasperFillManager;import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;import net.sf.jasperreports.engine.export.JRXlsExporter;public class JasperReportFill { @SuppressWarnings("unchecked") public static void main(String[] args) { String sourceFileName = "c://tools/jasperreports-5.0.1/" + "test/jasper_report_template.jasper"; String printFileName = null; DataBeanList DataBeanList = new DataBeanList(); ArrayListdataList = DataBeanList.getDataBeanList(); JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(dataList); Map parameters = new HashMap(); try { printFileName = JasperFillManager.fillReportToFile(sourceFileName, parameters, beanColDataSource); if (printFileName != null) { /** * 1- export to PDF */ JasperExportManager.exportReportToPdfFile(printFileName, "C://sample_report.pdf"); /** * 2- export to HTML */ JasperExportManager.exportReportToHtmlFile(printFileName, "C://sample_report.html"); /** * 3- export to Excel sheet */ JRXlsExporter exporter = new JRXlsExporter(); exporter.setParameter(JRExporterParameter.INPUT_FILE_NAME, printFileName); exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "C://sample_report.xls"); exporter.exportReport(); } } catch (JRException e) { e.printStackTrace(); } }}
这里,我们已经包含了将jasper打印文件导出为pdf,html的逻辑和xls格式.
生成报告
让我们使用常规的ANT构建过程编译并执行上述文件. build.xml文件如下所示 :
转到命令提示符,然后转到目录C:\tools\jasperreports-5.0.1 \ test,其中build.xml是放置.最后,执行命令 ant -Dmain-class = com.it1352.JasperReportFill .输出如下&&;
C:\tools\jasperreports-5.0.1\test>ant -Dmain-class=com.IT屋.JasperReportFillBuildfile: C:\tools\jasperreports-5.0.1\test\build.xmlclean-sample: [delete] Deleting directory C:\tools\jasperreports-5.0.1\test\classes [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jasper [delete] Deleting: C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrprintcompile: [mkdir] Created dir: C:\tools\jasperreports-5.0.1\test\classes [javac] C:\tools\jasperreports-5.0.1\test\baseBuild.xml:28: warning: 'includeantruntime' was not set, defaulting t [javac] Compiling 4 source files to C:\tools\jasperreports-5.0.1\test\classescompilereportdesing: [jrc] Compiling 1 report design files. [jrc] log4j:WARN No appenders could be found for logger (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory). [jrc] log4j:WARN Please initialize the log4j system properly. [jrc] log4j:WARN See https://img01.yuandaxia.cn/Content/img/tutorials/jasper_reports/faq.html for more info. [jrc] File : C:\tools\jasperreports-5.0.1\test\jasper_report_template.jrxml ... OK.run: [echo] Runnin class : com.IT屋.JasperReportFill [java] log4j:WARN No appenders could be found for logger (net.sf.jasperreports.extensions.ExtensionsEnvironment). [java] log4j:WARN Please initialize the log4j system properly.executereport: [echo] Im hereBUILD SUCCESSFULTotal time: 32 seconds
作为上述执行的结果,您将在C:\目录中找到三个文件sample_report.pdf,sample_report.html,sample_report.xls.