为了学习如何使用Jasper报告,我掉了很多头发。实际上,我有大约五个java.util.List对象,每个对象都有不同的数据类型来表示我的数据:
public class Person {
private int id;
private String firstName;
private String lastName;
private int age;
// accessors/mutators omitted for brevity
}
public class Place {
private int id;
private String name;
private String type;
private String state;
// accessors/mutators omitted for brevity
}
public class Thing {
private int id;
private String name;
private int rating;
// accessors/mutators omitted for brevity
} 我只是想在表中显示我的数据,有点像这样:

不幸的是,Jasper Reports似乎真的只设计用来处理一个数据源。我试图弄清楚这个问题已经有一段时间了,但我遇到了困难。如何在Jasper报表*.jrxml文件中拥有多个数据源和表示上述数据源的表?
发布于 2012-03-14 08:36:08
你能做的是使用子报表。创建具有所需标题节的主报表。在主报表中,您将创建三个参数,分别为JRDatasources,每个子报表一个。然后,为所需的每个表创建每个子报表。
然后你把每一个都作为一个子报表添加到主报表中,你可能不得不使用它,但我认为最好的位置可能是摘要。使用ireport时,它将提示您选择将参数作为子报表的数据源进行传递。
理想情况下,有一种方法可以将参数绑定到细节部分,因为在iReport中,您现在可以拥有多个细节部分。不幸的是,我还没有找到一种方法,如果有人知道一种方法,请投下一票并添加一个答案。
虽然还有另一种选择,您可以在单个报表中创建自己的自定义数据源和多个详细信息部分。从本质上讲,你最终会创建一个新的对象,将它们组合成一个……别管这是个可怕的想法。
发布于 2013-01-14 22:08:44
我使用jasper报表的list元素实现了这一点,并将数据源作为参数传递给报表。确保将列表放在可以增长的范围内,否则您的内容可能会被截断。
<componentElement>
<reportElement x="0" y="321" width="442" height="13" isRemoveLineWhenBlank="true"/>
<jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical">
<datasetRun subDataset="produkt">
<dataSourceExpression><![CDATA[$P{produkteDataSource}]]></dataSourceExpression>
</datasetRun>
<jr:listContents height="13" width="442">
<!-- Content goes here -->
</jr:listContents>
</jr:list>
</componentElement>https://stackoverflow.com/questions/9694015
复制相似问题