我有一个要求,我必须在JasperReports中设计一个报告。该报告有4张。第一张纸有5页,类似地其他纸张有一页或两页。我面临的问题是如果我使用 net.sf.jasperreports.export.xls.one.page.per.sheet 属性并将其设置为 true ,然后所有页面都有不同的表格。我需要设计报告,使得某些页面会出现在同一张表格中,而某些页面则出现在不同的表格中。
是否可以这样做?
答案 0 :(得分:8)
假设您有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);
}