最新历史版本 :行分栏隔行变色错位解决方案 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 问题描述

若对报表进行了 隔行/列设置背景色 操作,又设置了 报表分栏 ,可能会出现「错位」的情况,希望有方案可以解决错位问题,实现同行变色对齐,如下图所示:

1617091504227370.png

1.2 实现思路

在「条件属性」中利用「公式」实现。

先根据分栏列数和数据总数判断双数栏位需不需要特殊处理,再通过计算得到需要特殊处理的行数设置分栏。

2. 示例编辑

2.1 数据准备

新建普通报表,新建数据集 ds1,SQL 查询语句为:SELECT * FROM 销量

image.png

2.2 设计报表

1)将「销售员、产品、销量」数据列拖入 A2~C2 单元格中,设计表格样式如下图所示:

1617090804529647.png

2)将 A2 单元格「数据设置」修改为「列表」,如下图所示:

2.3 设置分栏

点击菜单栏「模板>报表分栏」,在打开的报表分栏页面中按如下图所示步骤设置:

1617091591218598.png

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<>0A2[!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=0A2 单元格扩展值的序号被 2 整除余数等于 0 时,当前行背景色为蓝色

注:公式由 4 个条件组成,公式之间使用 && 和 || 连接,按从左往右执行计算,当报表满足公式一时,按公式二显示背景色,当报表满足公式三时,按公式四显示背景色。

步骤如下图所示:

1617092002691894.png

2.5 效果预览

2.5.1 PC 端

保存报表,点击分页预览,行分栏的隔行变色效果如下图所示:

Snag_1cf73eb.png

2.5.2 移动端

App 端和 HTML5 端均支持,效果如下图所示:

Snag_1d0b583.png

3. 模板下载编辑

已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Primary\DetailReport\行分栏隔行变色错位解决方案.cpt

点击下载模板:行分栏隔行变色错位解决方案.cpt