场景描述
在IReport导出Excel中,遇到这么一个需求模板(如下图),可见分公司列需动态合并单元格。
注:此文章主要详解动态合并单元格,其他不做过多描述
开发环境
IReport版本:5.6.0
实现方式:主子模板
实现步骤
一、创建主模板
- 画主模板
1.1 设置待合并单元格属性
步骤:选中待合并单元格->设置属性->Position Type为Float与Stretch Type为Relative to Tallest Object
- 插入子模板
描述:在组件窗口,选择【Subreport】组件,添加完成后移动至合适位置(未显示组件窗口的见下一步)
2.1 调出组件模板窗口
2.2 设置子模板属性
Subreport Expression:$P{SUBREPORT_PATH} + "SumReinsByProvinceSub.jasper"——
$P{SUBREPORT_PATH}为子模板相对路径的上级父路径
SumReinsByProvinceSub.jasper为子模板二进制文件名称
Data Source Expression:new JRBeanCollectionDataSource($F{treatyAccList})——$F{treatyAccList}
为子模板数据集合
注:此时,IReport的数据结构为:
[
{
"treatyAccList": [
{
"字段1": "数据1"
},
{
"字段1": "数据2"
}
],
"分公司": "北京"
},
{
"treatyAccList": [
{
"字段1": "数据1"
},
{
"字段1": "数据2"
}
],
"分公司": "上海"
}
]
二、创建子模板
2.1 模板示例
注:每个单元格宽度与主模板列名要相同
2.2 设置模板高度
步骤:点击detail->查看属性->更改Band height,高度与主模板分公司单元格高度相同
至此,完成