我有一个要求,我必须在 JasperReports 中设计一个报告。该报告有 4 页。第一张表有 5 页,类似的其他表有一页或两页。我面临的问题是,如果我使用 net.sf.jasperreports.export.xls.one.page.per.sheet 属性并将其设置为 true,那么所有页面都位于不同的工作表中。我需要以某种方式设计报表,使某些页面位于同一张工作表中,某些页面位于不同的工作表中。
可以这样做吗?
最佳答案
假设您有 4 个单独的报表需要批量导出,那么在每个报表中您需要将 Ignore Pagination
设置为 true
(它是 jasperReport 标签中的一个属性在 jrxml 文件的开头,该属性类似于 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();
要设置工作表名称,请查看 Dynamic Sheet Names例如他们在 JasperForge 的例子。
<小时/> 根据您的评论,您希望使用相同的报告模板导出为多种格式。 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);
}
关于excel - JasperReports 中每个工作表属性一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10752117/