当前位置: 首页 > 教程 > JasperReports >

JasperReports 导出报表成不同格式

精华
小牛编辑
145浏览
2023-03-14

我们在上一章《JasperReports 查看打印报表》中已经看到,如何打印和查看一个 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

JasperReports 导出为PDF/HTML/XLS格式 

package cn.xnip;

import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.view.JasperViewer;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class JasperReportFill {

   public static void main(String[] args) {
      String sourceFileName = "d:/jasper_report_template.jasper";
      String printFileName = null;
      DataBeanList DataBeanList = new DataBeanList();
      ArrayList<DataBean> 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,
                    "d:/sample_report.pdf");

            /**
             * 2- export to HTML
             */
            JasperExportManager.exportReportToHtmlFile(printFileName,
                    "d:/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,
                    "d:/sample_report.xls");

            exporter.exportReport();
         }
      } catch (JRException e) {
         e.printStackTrace();
      }
   }
}

在D:/目录下会生成三个文件,如下:

随便打开其中一个sample_report.xls文件,如下: