开发手册 欢迎您!
软件开发者资料库

JasperReports - 导出报告

JasperReports导出报告 - 使用从环境设置,报告设计,编译报告设计,填充报告,查看和打印报告,导出,参数,数据源开始的基础知识到高级知识的初学者教程,简单轻松地学习设计和创建JasperReports。字段,表达式,变量,部分,组,样式,Scriplets,子报告,图表,Corsstabs和国际化。

我们在前一章已经看到,如何打印和查看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 ArrayList getDataBeanList() {      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();      ArrayList dataList = 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.