JasperReports中的每个表单属性都有一个页面

我有一个要求,我必须在JasperReports中devise一个报告。 这份报告有4张。 第一个工作表有5页,其他工作表有一个或两个页面。我面临的问题是,如果我使用net.sf.jasperreports.export.xls.one.page.per.sheet属性并将其设置为true ,那么所有的页面都来自不同的页面。 我需要devise报告的方式,一些页面将在同一张表和一些不同的表中的页面。

是否有可能做到这一点?

假设你有4个单独的报告,你正在批量导出,那么在每个报告中,你需要设置Ignore Paginationtrue (这是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图纸名称示例。


根据你的评论,你想要使用相同的报告模板导出到多种格式。 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); }