[]
在表格类报表中,经常会有自动合并单元格的需求,就是说,对于某些或某个列的相同数据,不要每行显示相同的数据,而是跨行合并相同内容的单元格。
单元格合并效果 | 单元格原始效果 |
|---|---|
|
|
在表格类报表中,若需实现纵向相同内容合并,通常推荐使用矩表元素;但当合并需求为选择性列合并(如上表的合并效果,仅合并"类别名称"列而保留"产品名称"列独立显示)时,普通表格反而更具灵活性。
设置某列单元格合并的方法是:
在报表设计器中,使用表格组件,完成数据绑定,然后选中表格内明细数据行的单元格,例如下图中的第二行的所有明细单元格:

选中明细行后,在右侧属性设置面板找到自动合并选项,并按需求设置。

自动合并属性说明:
选项 | 含义 | 适用场景 |
|---|---|---|
永不合并 | 同一列数据内容相同也不合并 (默认选项) 即同一列的不同行,无论数据内容是否相同,都不合并(默认选项) | 需保持每行数据独立显示时使用 |
跨分组合并 | 强制合并所有相同内容的单元格 (纵向完全合并) 即同一列的不同行,只要数据内容相同,都要合并。就是总是合并的意思 | 需要最大化合并相同数据时使用 |
分组内合并 | 仅在前一列已合并的分组内合并相同内容(依赖前一列的合并状态) 即同一列的不同行,数据相同时,是否合并要根据前一列是否合并 | 需要层级化合并(如分类-子类结构) |
分组内合并的特殊逻辑:
非首列行为:
若前一列设为【永不合并】,则本列【分组内合并】实际等效于【永不合并】(因每行自成一组)
若前一列设为【跨分组合并】,则本列【分组内合并】按分组维度合并
首列特殊性: 由于无前置列,首列的【分组内合并】自动退化为【跨分组合并】(即强制合并相同内容)
下面是多个列不同设置组合的最终效果。
前面的列设置【永不合并】,后续列设置【分组内合并】,最终效果是不合并。
前面的列设置【分组内合并】,后续列设置【分组内合并】,最终效果是合并。
前面的列设置【永不合并】,后续列设置【跨分组合并】,最终效果是合并。
前面的列设置【分组内合并】,后续列设置【跨组合并】,最终效果是合并。
总结: 如果想要强制某列合并,就设置为【跨分组合并】,以摆脱对前面各列的依赖。
1)例如: 将【类别名称】单元格设置为【跨分组合并】:

2)预览效果如下图: 可以看到,红框所示的【类别名称】列的单元格,都是按相同的类别名称合并,尽管前面那些列都设置为【永不合并】,这就是因为【类别名称】单元格设置了【跨分组合并】。

我们使用单元格属性对某一列的数据合并后,显示效果如下。合并后的单元格背景不再符合原来的填充规律,而是整块进行了填充。

一般情况下这种显示效果不影响阅读,但在某些场景下要求数据背景还是要遵循原来的规律,仅将合并的数据显示一次,后续重复则留空即可。具体效果如下:

那么这种显示效果是如何做到的呢?具体步骤如下:
1)使用表格组件,绑定数据字段,然后单击表格中的任意位置,使表格显示出分组窗口,然后将“ 订单编号 ”(即将要设置数据合并的那个字段)拖拽到分组窗口中添加分组。

2)删除分组头和分组尾。

3)将明细行的数据绑定改写为表达式: {IIF(RowNumber("表格1_订单编号1") = 1, 订单编号, "")}
表达式含义: 每组订单编号的第一行显示订单编号,其他行不显示。这样也就间接实现了我们想要的合并效果。

4)预览效果如下,这样我们未使用自动合并属性,也实现了数据合并的显示效果。
