Jasper模板导出为Excel、PDF

/**  
 * @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();
   }

 

转载于:https://www.cnblogs.com/qiushuiblog/p/10821145.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JasperReport是一个强大的报表生成工具,支持生成多种格式的报表,包括PDFExcel、Word等。下面是使用JasperReport生成Excel报表的简单步骤: 1. 创建报表模板:使用JasperStudio创建报表模板,选择Excel作为输出格式,并设计报表布局和样式。 2. 定义数据源:定义报表所需的数据源,可以是数据库、XML文件等。 3. 编写Java代码:使用Java代码调用JasperReport API,读取数据源并将数据填充到报表模板中,最终生成Excel报表。 下面是一个简单的示例代码: ```java // 加载报表模板 JasperReport jasperReport = JasperCompileManager.compileReport("report.jrxml"); // 定义数据源 JRDataSource dataSource = new JREmptyDataSource(); // 填充数据并生成Excel报表 JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, dataSource); JRXlsxExporter exporter = new JRXlsxExporter(); exporter.setExporterInput(new SimpleExporterInput(jasperPrint)); exporter.setExporterOutput(new SimpleOutputStreamExporterOutput("report.xlsx")); SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration(); configuration.setOnePagePerSheet(true); exporter.setConfiguration(configuration); exporter.exportReport(); ``` 在这个示例中,我们首先加载报表模板,然后定义一个空的数据源。接下来,使用JasperFillManager将数据源填充到报表模板中,并生成一个JasperPrint对象。最后,我们使用JRXlsxExporter将JasperPrint对象导出Excel文件。在导出Excel文件时,我们可以通过SimpleXlsxReportConfiguration设置导出选项,例如每页一个工作表等。 需要注意的是,JasperReport生成Excel报表的效果可能不如专业的Excel工具,例如Microsoft Excel或LibreOffice Calc。如果需要生成复杂的Excel报表,建议使用专业的Excel工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值