假设您有 4 个单独的报告要批量导出,那么在每个报告中您需要将 Ignore Pagination 设置为 true(它是 jrxml 文件开头的 jasperReport 标签中的一个属性,该属性看起来比如isIgnorePagination="true")。
要实际导出,它应该如下所示:
List<JasperPrint> jasperPrintList = new ArrayList<JasperPrint>();
jasperPrintList.add(JasperFillManager.fillReport("report1.jasper", params1));
jasperPrintList.add(JasperFillManager.fillReport("report2.jasper", params2));
jasperPrintList.add(JasperFillManager.fillReport("report3.jasper", params3));
jasperPrintList.add(JasperFillManager.fillReport("report4.jasper", params4));
JRXlsExporter exporter = new JRXlsExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "BatchExportReport.xls");
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
exporter.exportReport();
要设置工作表名称,请查看 JasperForge 上的 Dynamic Sheet Names 示例。
根据您的评论,您希望使用相同的报告模板导出为多种格式。 excel是唯一需要忽略分页的。您可以在运行时通过参数设置,而不是在报告中硬编码。因此,将以下内容添加到 params1、params2、params3 和 params4:
if(exportFormat == EXCEL) {
params1.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
params2.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
params3.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
params4.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE);
}