如何将JasperReport导出到包含多个工作表的Excel文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (24)

我们有一个报告,客户希望导出到Excel格式,其中它有多个工作表。本质上,这两个查询共享相同的参数,但其他的都是不同的。

在Jasper中,如何将多个工作表导出到EXCEL文件(最好是从不同的数据源导出)?

提问于
用户回答回答于

多亏了这个线程,我才能更容易地创建一个带有多个工作表的Excel导出。我发现你可以使用以下方法:

ArrayList<JasperPrint> list = new  ArrayList<JasperPrint>();
list.add(jp1); list.add(jp2);
exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT_LIST, list);

导出程序将自动使用每个JasperPrint对象来构造每个表;Jasper报告的名称(如jrxml文件中所指定的)也用作每个表的名称。

用户回答回答于

如何做到这一点的基础是像通常那样为每个工作表创建JasperPrint对象。

JasperPrint firstWorkSheet = ...;
JasperPrint secondWorkSheet = ...;

此时JasperPrint对象已经填充了数据源。那你就做:

List<JRPrintPage> pages = new ArrayList<JRPrintPage>(secondWorkSheet.getPages());
int i = firstWorkSheet.getPages().size();
for (int count = 0; count < pages.size(); count++) {
    firstWorkSheet.addPage(i, (JRPrintPage) pages.get(count));
    i++;
}

它会设置什么i中当前的页数。firstWorkSheet(应该是一个)。然后,它在secondWorkSheet并把它们加到第一工作表上。

确保在jasperReport中,将它设置为打印为每个工作表jrxml文件的一个页面,应该可以继续。如果有任何变化,我会来更新,但这应该是可行的。

扫码关注云+社区