gpt4 book ai didi

java - 如何在 JasperFillManager.fillReport 中拥有多个 JRBeanCollectionDataSource?

转载 作者:太空宇宙 更新时间:2023-11-04 13:54:33 24 4
gpt4 key购买 nike

我在我的应用程序(带有 JSP 的 Java 应用程序)中使用 Jasper 报告生成。我有一个带有表的 JSP 页面,并且我能够通过 jasper 报告成功生成包含该数据的 .xslx 文件。

我在代码中使用了以下几行,

dataListArrayListBeans表中的一行是一个人的信息。因此我们可以为此创建一个 Bean,所有行的数据都将是 ArrayList of Person BeansArrayList<Person> personalData = new ArrayList<Person>();

JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(this.dataList);

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, beanColDataSource);

因此,当它是一张表时,就这样简单明了。我有多个表,我想创建一个报告来打印这些表怎么样?

如图所示,这些表完全相互独立。

所以现在我有多个ArrayList(数据源)

ArrayList<Person> personalData =  new ArrayList<Person>();
ArrayList<Vehicle> vehicleData = new ArrayList<Vehicle>();
ArrayList<Problem> problemData = new ArrayList<Problem>();

但我只能用一个 JRBeanCollectionDataSource如下面的代码所示

JRBeanCollectionDataSource beanColDataSource = new JRBeanCollectionDataSource(this.dataList);

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, beanColDataSource);

那么我怎样才能成功地用我拥有的所有数据表制作报告呢?

enter image description here

最佳答案

您可以构建多个子报表,并使用 JasperReportDataSource 填充每个子报表。因此,您可以使用 $F{data.personal}$F{data.vehicle}$F{data.problem} 作为每个子报表的引用。

每个都将返回一个新的数据源以在子报表中使用。

关于java - 如何在 JasperFillManager.fillReport 中拥有多个 JRBeanCollectionDataSource?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29974890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com