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