【问题标题】:One page per sheet property in JasperReportsJasperReports 中每个工作表属性一页
【发布时间】:2012-05-25 09:44:46
【问题描述】:

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

可以这样做吗?

【问题讨论】:

  • 那么您是否有 4 个单独的报告文件正在使用?

标签: excel jasper-reports xls


【解决方案1】:

假设您有 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);
}

【讨论】:

  • 感谢您的回复。但是我不确定我是否已经明确了我的问题。让我给你一个明确的要求。我得到的模板是 xls 格式,有 4 个不同的选项卡/工作表。如果仅通过使用 3 个子报表并为每个工作表属性设置一页,问题就会得到解决。但是当我完成设计时意识到第一个选项卡/工作表本身有 5 页。因此,设置每个工作表一页属性将使这些页面出现在不同的选项卡/工作表中,这不是我想要的。有什么办法可以满足这个要求吗?
  • 我一定遗漏了一些东西,因为在 Excel 电子表格的上下文中,一个页面并不真正意味着任何东西。我认为您将不得不修改第一份 5 页的报告,使其成为单页。也许您可以使用一些子报表技巧来实现它。您可以将报告作为子报告放置在新的顶级报告的详细信息部分中。将两者的忽略分页设置为 True,然后将其导出。
  • 感谢您的回复。是的,根据您的建议,它在 Excel 导出中运行良好。但是,对于 pdf 和 rtf 等其他导出,当我将忽略分页设置为 true 时,它​​会生成一个长单页。我需要设计报告,使其在 excel 中是可打印的格式(这里我假设我们有设置打印格式的选项),最重要的是在 pdf 和 rtf 中。有什么我可以设置或添加的属性吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-28
  • 1970-01-01
  • 2022-12-24
  • 2015-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多