ireport4.0.2父子报表详解

开发步骤:

1、新建一个父报表parent_report

在ireport designer左上角工具栏中点击“文件”,下拉列表中选择“New...",弹出如下对话框:

105942_CzcO_1447895.png

默认选择"Blank A4",点击“Launch Report Wizard”,进入下图:

110248_I1O1_1447895.png

为报表文件命名,并选择需要保存的路径。点击“下一步"。

110444_pRGk_1447895.png

接下来选择Connections/Data Sources,如果没有数据源则选择”Empty datasource“。下一步。

110639_rZF1_1447895.png

下一步。

110727_JyVY_1447895.png

继续下一步。

110827_Zv0C_1447895.png

到这一步父报表文件便新建好了。

2、引入subreport

首先新建sub1_report,创建步骤参考上面。效果如下图:

133925_tH9c_1447895.png

在“组件面板”中将Subreport组件拖入父报表中的detail中,会弹出如下窗口:

134156_Jgqw_1447895.png

选择创建好的子报表sub1_report,一直点击“下一步”,完成。效果如下:

112050_mlHR_1447895.png

3、配置数据源:

我用过两种数据源,一种是JDBC,一种是JavaBean。下面我分别来讲:

<一>JDBC数据源配置

点击工具栏”电插头“图标,如下图

134520_vlbb_1447895.png

弹出如下窗口:

134658_g5kA_1447895.png

new一个datasource,如下图有很多种datasource,这里我们选择JDBC

134749_suqY_1447895.png

next,进入数据库信息配置,填好信息之后,test一下,没问题save,JDBC数据源配置完成。

134920_QPW9_1447895.png

<二>配置JavaBean数据源

我在项目中用的是ZK框架,它集成了Jasperreport 插件,代码如下:

public void onClick$printBtn() {

String subReportPath = getClass().getResource("/").getPath().replace("WEB-INF/classes", "invs/print");

String jasperUrl = "/invs/print/inv_check_report.jasper";

Div div_report = (Div) reportWin.getFellow("div_report");

reportWin.setVisible(true);

Jasperreport jasperreport = (Jasperreport) div_report.getFellow("report");

Map<String,Object> parameters = new HashMap<String,Object>();

parameters.put("SUBREPORT_DIR", subReportPath);

parameters.put("createdTime", DateUtil.getStrLong(checkVO.getCreatedTime()));

parameters.put("creatorName", checkVO.getCreatorName());

parameters.put("deptName", checkVO.getDeptName());

JRBeanCollectionDataSource usedDetailDs = new JRBeanCollectionDataSource(checkVO.getUsedDetailList());  //设置List数据源

JRBeanCollectionDataSource usedSummaryDs = new JRBeanCollectionDataSource(checkVO.getUsedSummaryList());

JRBeanCollectionDataSource stockDetailDs = new JRBeanCollectionDataSource(checkVO.getStockDetailList());

JRBeanCollectionDataSource stockSummaryDs = new JRBeanCollectionDataSource(checkVO.getStockSummaryList());

parameters.put("usedDetailDs", usedDetailDs);//这里"usedDetailDs"和report中的parameter要对应

parameters.put("usedSummaryDs", usedSummaryDs);

parameters.put("stockDetailDs", stockDetailDs);

parameters.put("stockSummaryDs", stockSummaryDs);

jasperreport.setSrc(jasperUrl);

jasperreport.setParameters(parameters);

jasperreport.setType("pdf");

}

这里javabean向Jasperreport中传递参数时,List类型的数据需要用JRBeanCollectionDataSource来进行封装,同时在parameter属性Class设置为net.sf.jasperreports.engine.data.JRBeanCollectionDataSource,如下图

141130_H9pI_1447895.png

同时,在这是subreport属性时,Connection type选择Use a datasource,Data Source Expression选择对应从后台传过来的parameter。

141056_GanI_1447895.png

4、常见问题

<一>pdf中文不显示

需要设置显示中文标签的属性:

pdf Font name is now deprecated:STSong-Light
pdf Encoding : UniGB-UCS2-H(China Simplified)

如图

141707_Vxma_1447895.png

项目工程中需要引入这两个包:iText和iTextAsian,注意,这两个包要配套起来,报名应该以com.lowagie开头,不要弄错了哦。


这篇文章是对之前项目中用到的ireport技术的一个小总结,如果大家有什么问题可以留言或者加我QQ(1041211664).





转载于:https://my.oschina.net/u/1447895/blog/345827

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值