JasperReports中每个页面一页属性

时间:2012-05-25 09:44:46

标签: excel jasper-reports xls

我有一个要求,我必须在JasperReports中设计一个报告。该报告有4张。第一张纸有5页,类似地其他纸张有一页或两页。我面临的问题是如果我使用 net.sf.jasperreports.export.xls.one.page.per.sheet 属性并将其设置为 true ,然后所有页面都有不同的表格。我需要设计报告,使得某些页面会出现在同一张表格中,而某些页面则出现在不同的表格中。

是否可以这样做?

1 个答案:

答案 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);
}