【问题标题】:How to export to multiple sheets in excel from jasper report如何从碧玉报告导出到Excel中的多个工作表
【发布时间】:2016-01-15 10:13:02
【问题描述】:

我正在使用 iReport 编写包含许多子报表的报表。

从我的应用程序生成报告时,我希望 Excel 文件中还有另外两个工作表。

在互联网上搜索时,我找到了有关在报告中创建中断的答案,在子报告“true”中有“忽略分页”选项,但我仍然不清楚。

我有哪些选项可以控制创建新工作表的方式和时间

【问题讨论】:

  • 你好皮特!感谢您的回答 :) 实际上我正在使用 Jasper Report 服务器。我所做的是我设置 net.sf.jasperreports.export.xls.one.page.per.sheet="true" ,创建了一个新组,我将要在第二张表中生成的子报表与 Group 属性:从“已检查”的新页面开始。还在子报告和主报告中检查了“忽略分页”属性,这有效!我已将主报告的内容放在详细信息带中。

标签: jasper-reports


【解决方案1】:

在 jasper 报告中,jrxmljava 代码中都有不同的方法来实现新工作表。默认行为是为每个页面创建一个新工作表。我将说明 3 种最常见的方法,但在使用它们时会遇到相关问题。

忽略分页和中断元素

方法

jasperReport 标签上设置isIgnorePagination="true" 并添加

<break>
  <reportElement x="0" y="0" width="100" height="1" uuid="c5371aa4-2eb4-4ab9-8cae-39f50da3317b"/>
</break>

当您需要新工作表时。

问题:如果您也导出为 pdf,报告将不会很漂亮(因为它忽略了分页)

使用 jrxml 属性

方法 为避免在每个新页面上创建新工作表,请设置属性

net.sf.jasperreports.export.xls.one.page.per.sheet="false"

当您希望它在 reportElement 之前或之后创建新工作表时添​​加相关属性:

net.sf.jasperreports.export.xls.break.before.row="true"
net.sf.jasperreports.export.xls.break.after.row="true"

问题:每张纸上的列都是相同的,这可能会导致不同纸上的colspan丑陋

使用 java 并随心所欲地控制工作表(加载不同的报告)

方法

List<JasperPrint> sheets = new ArrayList<JasperPrint>();
for (int i=1;i<=8;i++){
   JasperPrint print = JasperFillManager.fillReport("subReport_" + i + ".jasper", paramMap, connection);
   sheets.add(print); 
}
JRXlsxExporter exporter = new JRXlsxExporter();
exporter.setExporterInput(SimpleExporterInput.getInstance(sheets));
exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(new File("text.xlxs"));
SimpleXlsxReportConfiguration configuration = new SimpleXlsxReportConfiguration();
configuration.setSheetNames(sheetNames): //sheets names is an array of the different names.
configuration.setOnePagePerSheet(false); //remove that it break on new page
configuration.setDetectCellType(true);
exporter.setConfiguration(configuration);
exporter.exportReport();

问题:如果您使用的是jasper报表服务器,则不能使用此方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多