ireport:以List,Set等集合作为subreport的数据源

 最近在研究在ireport,其中很多地方用到subreport,现在分享一下以list作为子报表数据源的例子:

(主报表显示所有的老师,子报表显示每个老师下面所有的学生)

首先我们在程序中设置的数据源:

List<Teacher> teachers= (List<Teacher>) getTeachers();

JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(teachers);

这个dataSource就是一个数据源,它里面保存的是Teacher information。我们先看一下Teacher的结构:

public class Teacher{
	private String name;
	private String address;
	private List<Student> Students;

 Teacher.java类里面有一个List用来保存学生的信息,现在我们要使用一个子报表输出学生的信息。现在打开ireport,在左边的树形结构菜单中有一个fields菜单,我们在这个菜单下把Teacher的属性添加进去,注意每个字段的类型,需要跟Teacher.java类中字段保持一致,大小写,属性名,字段类型都需要保持一致。那么我们把Students字段添加到fields菜单下面,在属性框中设置:"Field Class“为java.util.List。

 

 

在主报表中把要显示的Teacher信息放入主报表中,然后

在主报表detail band中加入subreport组件,用于显示学生的信息,点击subreport,开始设置它的属性。


 

ConnectionType属性,这里我们用到的是一个list作为数据源,所以我们选择“Use a datasource expression”,

然后就是设置Data Source Expression,设置数据源的表达式,这是个关键。由于此处我们用到的是一个list集合作为数据源,所以我们设置为:new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($F{students})

。JRBeanCollectionDataSource中传入的参数是集合,list,Set等集合都可以。
 然后Parameters,就是用来传参数的,传参数给子报表。这个地方要注意,参数要跟子报表保持一致,名字,类型等都需要保持一致。我们先添加参数:

把teacherName传给子报表,然后右键点击子报表,选择open subreport,然后在子报表中把Parameter菜单中把参数teacherName添加进去:



 一定要注意大小写以及数据类型,那么现在teacherName就可以在子报表中使用了。然后在子表中把学生信息放进去,编译就可以了。

还有一点需要注意,当添加一个subreport组件时,在主表中的Parameter菜单下会自动生成一个参数SUBREPORT_DIR,是用来设置子报表的目录的,这个我们需要在程序中设置,

 

Map map = new HashMap();				
map.put("collectionName", collection);
map.put("SUBREPORT_DIR", ReportOption.BASENAME);

 

这样一个子报表就完成了,在下一章节中,我将具体介绍在程序中具体如何生成报表,这一节重点是讲解如何在ireport中设置subreport的属性参数等,具体跟我们程序结合如何使用,我将在接下来的章节中介绍到。

 

如果有错误的地方,望各位高手指点一二。谢谢!O(∩_∩)O~

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
iReport是一个用于创建JasperReports报表的可视化设计器。它可以帮助用户通过拖放方式设计报表,支持多种数据,包括数据库、XML、JavaBeans等。以下是iReport的一些基本使用方法: 1.安装iReport iReport可以从官方网站下载并安装。安装完成后,可以打开iReport并开始创建报表。 2.创建报表 在iReport中,可以通过向报表中添加元素来创建报表。可以从工具栏中选择所需的元素,例如文本框、图像、表格等,并将其拖放到报表中。可以使用属性编辑器设置元素的属性,例如字体、颜色、大小等。 3.设置数据iReport中,可以使用多种数据来填充报表。可以使用JDBC连接到数据库,也可以使用JavaBean、XML等数据。可以在iReport中设置数据,并使用查询语句从数据中检索数据。 4.导出报表 在iReport中,可以将报表导出为多种格式,例如PDF、HTML、Excel等。可以使用导出向导来选择所需的导出格式,并设置导出选项。 以下是两个与iReport相关的例子: 1.使用JRBeanCollectionDataSource填充报表 ```java JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(devPictures); Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("dataSource", dataSource); JasperPrint jasperPrint = JasperFillManager.fillReport(report, parameters, dataSource); ``` 2.使用JRRtfExporter导出报表 ```java JRRtfExporter exporter = new JRRtfExporter(); exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outputFile); exporter.exportReport(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值