Jasper模板导出为ExcelPDF

Posted qiushuiblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jasper模板导出为ExcelPDF相关的知识,希望对你有一定的参考价值。

/**  
 * @Description: 将模板导出为Excel
 * @author: 
 * @date: 2018年3月22日 下午8:57:24
 * @param pagename 模板文件名称
 * @param params 导出参数
 * @param javaBean 报表数据源实体类
 * @param request 请求对象
 * @param response 响应对象
 * @throws JRException Jasper异常
 * @throws IOException IO异常
 */
@Override
public void exportTemplateToExcel(String pagename, Map<String, Object> params, Object javaBean,
      HttpServletRequest request, HttpServletResponse response) throws JRException, IOException {
   List<Object> list = new ArrayList<Object>();
   list.add(javaBean);
   // 获取模板
   JasperReport jasperReport = getJasperReport(pagename);
   // 创建数据源
   JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(list);
   // 设置jasper文件夹的路径
   params = setJasperPath(params);
   // 填充模版
   JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);
   // 生成文件名
   String fileName = UUID.randomUUID().toString().toUpperCase() + ".xlsx";
   // 资源文件完整路径
   String completePath = getPdfUrl(request, fileName);
   // 服务器文件临时路径
   String templatePath = getTempFoleder() + "/" + fileName;
   // 设置response参数,用于打开下载页面
   response.reset();
   response.setContentType("application/x-msdownload;");
   response.setHeader("Content-Disposition",
         "attachment;filename=" + new String(fileName.getBytes("utf-8"), "ISO-8859-1"));
   // 创建Jasper Excel导出类
   JRXlsxExporter exporter = new JRXlsxExporter();
   // 设置导出配置项
   SimpleXlsxReportConfiguration conf = new SimpleXlsxReportConfiguration();
   conf.setWhitePageBackground(false);
   conf.setDetectCellType(true);
   exporter.setConfiguration(conf);
   // 设置输入项
   ExporterInput exporterInput = new SimpleExporterInput(jasperPrint);
   exporter.setExporterInput(exporterInput);
   // 设置输出项
   OutputStreamExporterOutput exporterOutput = new SimpleOutputStreamExporterOutput(templatePath);
   exporter.setExporterOutput(exporterOutput);
   //导出报表
   exporter.exportReport();
   // 重定向到资源文件url
   response.sendRedirect(completePath);
   exporterOutput.close();
}

   /**
    * 导出模板为PDF文件
    * @param pagename
    * @param params
    * @param javaBean
    * @param request
    * @param response
    * @throws JRException
    * @throws IOException
    */
   @Override
   public void exportTemplateToPdf(String pagename, Map<String, Object> params, Object javaBean,
                                   HttpServletRequest request, HttpServletResponse response) throws JRException, IOException {
       List<Object> list = new ArrayList<Object>();
       list.add(javaBean);
       // 获取模板
       JasperReport jasperReport = getJasperReport(pagename);
       // 创建数据源
       JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(list);
       // 设置jasper文件夹的路径
       params = setJasperPath(params);
       // 填充模版
       JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, params, dataSource);
       // 生成文件名
       String fileName = UUID.randomUUID().toString().toUpperCase() + ".pdf";
       // 资源文件完整路径
       String completePath = getPdfUrl(request, fileName);
       // 服务器文件临时路径
       String templatePath = getTempFoleder() + "/" + fileName;
       // 设置response参数,用于打开下载页面
       response.reset();
       response.setContentType("application/pdf;");
       response.setHeader("Content-Disposition",
           "attachment;filename=" + new String(fileName.getBytes("utf-8"), "ISO-8859-1"));
       //定义报表输出源
       JRPdfExporter exporter = new JRPdfExporter();
       // 设置输入项
       ExporterInput exporterInput = new SimpleExporterInput(jasperPrint);
       exporter.setExporterInput(exporterInput);
       // 设置输出项
       OutputStreamExporterOutput exporterOutput = new SimpleOutputStreamExporterOutput(templatePath);
       exporter.setExporterOutput(exporterOutput);
       //导出报表
       exporter.exportReport();
       // 重定向到资源文件url
       response.sendRedirect(completePath);
       exporterOutput.close();
   }

 

以上是关于Jasper模板导出为ExcelPDF的主要内容,如果未能解决你的问题,请参考以下文章

利用程序将.jrxml导出为.jasper文件并用PDF显示

Jasper 报告无法导出为 PDF

Jasper Reports PDF 不导出西里尔文值

使用 jasper 将日期导出到 Excel

jquery datatable如何在导出到excel pdf时从标题中删除下拉过滤器选择值

Jasper Report 以 CSV 格式导出带有科学计数法的数字