通过iReport可以方便的设计Jasperreport报表,其中的子报表功能给报表设计带来很大的便利,不过iReport的Guide中对subreport的设计描述并不详尽,通过摸索后做了一些总结。
一、在主报表中关于子报表元素的设计属性
下面两图为子报表(subreport)的属性Dialog
a) Parameters Map Expression表示子报表的参数引入从主报表的参数“paramsub2”中获得,“paramsub2”的类型为“java.util.Map”;
b) Connection DataSource Expression表示子报表的数据源从何获得,我的子报表数据源从主报表的参数“datasetsub2”中获得,“datasetsub2”的属性为“net.sf.jasperreports.engine.data.JRBeanCollectionDataSource”;
c)“Subreport Expression”是很重要的设置项,可以采用字符串类型表示子报表的路径,来引导主报表加载子报表的jasper文件,我还是喜欢直接从主报表的参数中获得子报表的jasper对象。如上图设置。
二、子报表中的设置项
子报表中的参数设置和变量设置和设计单独的报表无异,不同处只在于加载时通过主报表加载,即先将报表参数传给主报表(如上图的“paramsub2”),然后由主报表传给子报表。
有一点要注意,在报表设置中,“如果没有数据时”选项中,如果设置为NoPages则在没有datasource传入时,该子报表在主报表中不显示。
开始通常不注意该参数,但在调试中使用空数据时没有看到子报表输出,一直不明原因,导致走了弯路。
注意:在报表中用到的参数、字段、变量都要在菜单栏“查看--字段/变量/参数”中对应设置,以及字段、变量的类型要和javabean中传入的类型匹配,
如图:
三、代码
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportFile.getPath()); //主报表
JasperReport sub0jasperRep = (JasperReport) JRLoader.loadObject(subreport0File.getPath()); //子报表;
Map m = new HashMap(); //主报表的参数;
Map submap = new HashMap(); //子报表的参数;
m.put("sub2",sub0jasperRep); //将子报表的jasper传入主报表的参数"sub2";
//将子报表的datasource传给主报表的参数"datasetsub2";
m.put("datasetsub2",new JRBeanCollectionDataSource(sub2datasource));
//将子报表的参数表submap通过主报表的参数"paramsub2"传入;
m.put("paramsub2",submap);
//主报表装载参数和数据源;
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, m, new JRBeanCollectionDataSource(dataset));
如此基本完成子报表和主报表的载入。
分享到:
相关推荐
4. 设置父报表及子报表数据源:最后,我们需要设置父报表及子报表的数据源,通过 Parameters 和 Data Source Expression 来实现。 iReport 子报表技术的应用 iReport 子报表技术可以应用于各种复杂的报表设计,...
本篇将深入探讨如何利用IReport来实现子报表以及行合并的实例。 首先,IReport是一款基于GUI的报表设计工具,它允许用户通过拖拽方式设计报表模板,然后将其编译成JasperReport可以理解的JRXML文件。JasperReport则...
iReport 报表、子报表、主从报表、合计、实例解析1....4.2.2. iReport子报表SubReport(例:批量打印报表)... 13 4.2.3. iReport table类型的表单(例:押金报表)... 21 4.2.4. Dorado7中iReport的配置... 24
【Ireport子报表学习例子】是一个实用的教程,旨在帮助用户深入理解如何使用Ireport工具创建和设计子报表。Ireport是一款开源的报告设计工具,它允许开发者通过直观的图形界面来创建复杂的JavaServer Pages (JSP) 和...
在 JasperReports 的设计工具 IReport 中,创建复杂的报表有时需要使用子报表来组织和展示数据。本主题将详细讲解如何利用 Ireport 实现子报表调用交叉报表的过程,以帮助你更好地理解和操作。 首先,我们需要了解...
在iReport设计报表时,有时候我们需要将主报表的数据传递给子报表,以便子报表能够根据这些参数进行定制化的数据查询和展示。这个过程涉及到的主要知识点是报表参数的传递,也就是所谓的"传参"。以下是对这个过程的...
本篇将详细探讨"ireport 子报表例子"这一主题,以及相关文件"显示部门的.jrxml"、"显示部门下的用户.jrxml"和"子报表使用.ppt"所涵盖的知识点。 一、IReport简介 IReport是Jaspersoft公司开发的一款开源报表设计...
iReport 则是一款用于设计 JasperReports 报表的开源工具,支持创建复杂的报告布局,包括主报表和子报表。 首先,让我们深入理解 SpringMVC 的核心概念。SpringMVC 通过 DispatcherServlet 进行请求分发,...
在iReport中,这个参数是一个预定义的参数,用于指定子报表的目录路径。当你在主报表中嵌套子报表时,需要通过此参数告诉系统子报表的具体位置,以便于正确地加载和执行。通常,子报表是独立设计的,然后在主报表中...
2. 在主报表模板中添加子报表:将子报表元素拖放到适当位置,设置子报表的位置和大小,然后在`Subreport Expression`中输入子报表的路径。 3. 数据源的连接:如果子报表和主报表使用相同的数据源,可以直接引用;...
本篇文章将专注于如何在IReport中使用子报表,并结合JavaBean集合作为数据源来生成报告。 首先,理解`子报表`的概念。子报表是报表中的一个区域,它可以独立设计并重复显示主报表中的数据。这样可以将复杂报表拆分...
在iReport设计工具中,分组(Grouping)与子报表(Subreport)是两种不同的报表组织和数据呈现方式。本文将重点介绍这两种功能的区别及其应用场景。 ### 一、分组(Grouping) #### 1.1 定义 分组是指在报表中对...
设置子报表的参数,包括传递给子报表的值(通常是主报表中的字段)以及子报表的定位和大小。 3. 配置数据源:子报表的数据源可以是主报表的同一个数据源,也可以是独立的数据源。根据实际需求,可以选择JDBC连接、...
7. **子报表和数据集**:了解如何创建子报表,以及如何定义和使用数据集进行分组和汇总。 8. **预览和导出**:在iReport中预览报表效果,然后导出为PDF、HTML等格式。 通过这个教程,你将掌握使用iReport的基本技巧...
iReport交叉报表详细知识点 iReport交叉报表是iReport JasperReports1.1.1版本中新增加的功能之一,它允许用户创建交叉报表,即使报表的行和列都是从数据库中读取的,而不是普通那种列固定行是从数据库中读取。下面...
- 在主报表中添加子报表时,需更改子报表的连接类型(connection type)为“Use a data source expression”,并在数据源(Data Source)中设置传递的List参数。 5. **子报表属性设置**: - 主报表添加的子报表...
本文将详细阐述如何使用iReport 4.5.1这个强大的报表设计工具来创建和管理报表,以及如何制作子报表,以实现更复杂的数据呈现需求。 首先,我们要理解iReport是什么。iReport是一款开源的Java报表设计工具,它允许...
iReport作为其配套的图形界面编辑器,简化了XML文件的创建过程,用户可以通过它直观地设计包含图表、图片和子报表的复杂报表。 iReport的核心特性包括集成JFreeChart库,支持创建各种图表,以及通过JDBC、...