1. 概述
1.1 问题描述
若对报表进行了 隔行/列设置背景色 操作,又设置了 报表分栏 ,可能会出现「错位」的情况,希望有方案可以解决错位问题,实现同行变色对齐,如下图所示:
1.2 实现思路
在「条件属性」中利用「公式」实现。
先根据分栏列数和数据总数判断双数栏位需不需要特殊处理,再通过计算得到需要特殊处理的行数设置分栏。
2. 示例
2.1 数据准备
新建普通报表,新建数据集 ds1,SQL 查询语句为:SELECT * FROM 销量 。
2.2 设计报表
1)将「销售员、产品、销量」数据列拖入 A2~C2 单元格中,设计表格样式如下图所示:
2)将 A2 单元格「数据设置」修改为「列表」,如下图所示:
2.3 设置分栏
点击菜单栏「模板>报表分栏」,在打开的报表分栏页面中按如下图所示步骤设置:
2.4 设置条件属性
选中 A2 单元格,点击右侧属性面板添加一个条件属性,选择属性为「背景」,颜色为「蓝色」,作用于「当前行」。设置条件类型为「公式」,输入公式为:
ROUNDUP(COUNT(A2[!0])/2,0)%2<>0&&(&A2+(1-ROUNDUP(&A2/ROUNDUP(COUNT(A2[!0])/2,0),0)%2))% 2=0||ROUNDUP(COUNT(A2[!0])/2,0)%2=0&&&A2%2=0
公式说明如下表:
分类 | 公式 | 说明 |
---|---|---|
公式一 | ROUNDUP(COUNT(A2[!0])/2,0)%2<>0 | A2[!0] 是指 A2 扩展出来的所有单元格,使用 COUNT 计数后,再除以分栏的列数,本例中列数为 2。再使用 ROUNDUP 对计算的数字向上取整后,被 2 整除余数不等于 0 ,表示报表分栏后总行数为奇数 |
公式二 | (&A2+(1-ROUNDUP(&A2/ROUNDUP(COUNT(A2[!0])/2,0),0)%2))% 2=0 | &A2 为获取 A2 单元格扩展值的序号,计算结果等于 0 时当前行背景色为蓝色 |
公式三 | ROUNDUP(COUNT(A2[!0])/2,0)%2=0 | 和公式一相同,计算结果被 2 整除余数等于 0,表示报表分栏后总行数为偶数 |
公式四 | &A2%2=0 | A2 单元格扩展值的序号被 2 整除余数等于 0 时,当前行背景色为蓝色 |
注:公式由 4 个条件组成,公式之间使用 && 和 || 连接,按从左往右执行计算,当报表满足公式一时,按公式二显示背景色,当报表满足公式三时,按公式四显示背景色。
步骤如下图所示:
2.5 效果预览
2.5.1 PC 端
保存报表,点击分页预览,行分栏的隔行变色效果如下图所示:
2.5.2 移动端
App 端和 HTML5 端均支持,效果如下图所示:
3. 模板下载
已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Primary\DetailReport\行分栏隔行变色错位解决方案.cpt
点击下载模板:行分栏隔行变色错位解决方案.cpt