1. 概述编辑
1.1 问题描述
文档每页显示固定行数中,通过「条件属性>行后分页」实现了每页显示固定行数,但在其基础上实现页内合计时,使用「重复结尾行」设置「页合计」,会出现页合计重复出现的问题。如下图所示:
那么要如何实现固定行数报表中,页合计、组合计、总合计正常显示呢?
1.2 解决思路
利用高级分组写分组公式,在条件属性中设置「行前分页」,再进行合计。
2. 示例编辑
2.1 打开模板
打开模板:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\Pagination\按组分页.cpt。
修改报表样式:在表格前插入一列,在第 6、7、8 行分别设置「页合计」、「组合计」和「总合计」。样式如下图所示:
2.2 设置分组
模板 按组分页.cpt 中一个组的数据是一个「货主地区」的全部数据,这里将其每个组的数据再分为每 5 条数据为一组。
1)选中 A5 单元格,拖入数据列「订单 ID」,设置扩展方向为「纵向扩展」,左父格为 B4 单元格。
2)设置 A5 单元格的「单元格元素>数据设置」为「分组>高级」,点击「自定义」,选择「公式分组」,显示模式为「普通分组」,自定义值输入公式:CEILING(INARRAY($$$,ds1.group(订单ID))/5) 。即每 5 条数据为 1 组,组序号从 1 开始。
公式说明如下表所示:
公式 | 说明 |
---|---|
ds1.group(订单ID) | 选出数据集 ds1 中订单 ID 的数据并分组 |
INARRAY($$$,ds1.group(订单ID))/5 | 返回当前值在数组中的位置,再除以 5 |
CEILING() | 将参数沿绝对值增大的方向,舍入为最接近的整数 |
步骤如下图所示:
3)修改 B5 单元格的左父格为 A5 单元格(即默认)。
2.3 汇总计算
针对「应付金额」数据列作合计,下面分别介绍三种合计设置。
2.3.1 页合计
「货主地区」下每一小组订单记录就为一页,页合计即对每一小组数据进行汇总。设置「页合计」所在 B6 单元格左父格为 A5,在 E6 单元格中插入公式sum({E5})。
2.3.2 组合计
对每个「货主地区」的所有数据进行汇总,设置「组合计」所在 B7 单元格的左父格为 B4,在 E7 单元格中插入公式sum(E5)。
2.3.3 总合计
所有数据都扩展完后进行总计,不需要设置父格,直接在 E8 单元格中插入公式sum(E5)。
2.4 设置分页
此时预览模板,每一小组还是显示在一页上面,因此需要设置分页。
选中 A5 单元格选择「条件属性」,添加属性「分页」,选择「行前分页」,条件类型选择「普通」,操作符选择「不等于整型 1」,即每个地区下从小组序号为 2 的小组开始「行前分页」,如下图所示:
2.5 隐藏列
设置完成后隐藏 A 列。
2.6 效果预览
2.6.1 PC 端
保存模板,点击「分页预览」,效果如下图所示:
2.6.2 移动端
App 端和 HTML5 端均支持,效果如下图所示:
2.7 补充:设置页码
问题描述
上述已完成模板,以货主地区来进行分页,每页 5 条数据,此时若想要知道这是某个地区的第几页和这个地区共有几页,那么该如何生实现呢?
解决方案
1)在报表下方插入两个表示页码的公式:D10 单元格为{A5},表示某地区当前页数;E10 单元格为"/" + count(A5),表示获取该地区的页码有几页,"/" 起分隔符的作用。
2)设置 D10、E10 单元格的左父格均为「货主地区」所在的 B4 单元格,并将第 10 行设置为重复结尾行。
3)由于重复结尾行的影响,需将总合计所在 B8、E8 单元格的左父格设置为 A11,并且在 A11 单元格中添加一个空格,使第 11 行为「空白编辑行」。
如下图所示:
4)保存报表,点击「分页预览」,即可看到当前地区的页码数:
注:也可以通过页码公式进行页码的显示,可参考根据分组设置页码。
3. 模板下载编辑
已完成模板可参见:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\Pagination\分组分页合计.cpt
点击下载模板:分组分页合计.cp