1. 概述
1.1 版本
报表服务器版本 | 功能变更 |
---|---|
11.0 | - |
1.2 预期效果
当表格是双向扩展列时,即包含横向和纵向两个表头,数据同时满足横向和纵向的类别,想要实现分页及页内合计,预期效果如下图所示:
1.3 实现思路
利用高级分组写分组公式,在条件属性中设置「行前分页」,再进行合计。
2. 示例
2.1 准备数据
点击设计器左上角「文件>新建普通报表」,新建数据库查询,输入 SQL 语句:SELECT * FROM 销量。
2.2 设计表格
1)合并 B1~D2 单元格,输入文本:地区销售概况,如下图所示:
2)合并 B3、C3 单元格,选中 B3 单元格,选择「单元格元素>插入斜线」按钮,输入:产品|销售员|地区 。如下图所示:
3)将对应的数据拖入单元格中,单元格设置如下表所示:
单元格 | 设置 |
---|---|
A4 | 纵向扩展,父格为默认 |
B4 | 纵向扩展,父格为默认 |
C4 | 纵向扩展,父格为默认 |
D3 | 横向扩展,父格为默认 |
D4 | 不扩展,父格为默认 |
2.3 设置分组分页
2.3.1 设置分组
本例将表格按照 C4 单元格的「销售员」字段进行分组分页,每 3 行数据分为 1 组。
将 「销售员」字段拖入 A4 单元格,点击右侧「单元格元素>数据设置」为「分组>高级」,点击「自定义」,选择「公式分组」,显示模式为「普通分组」,自定义值输入公式:CEILING(INARRAY($$$,ds1.group(销售员))/3) 。即每 3 条数据为 1 组,组序号从 1 开始。
公式说明如下表:
公式 | 说明 |
---|---|
ds1.group(销售员) | 选出数据集 ds1 中销售员的数据并分组 |
INARRAY($$$,ds1.group(销售员))/3 | 返回当前值在数组中的位置,再除以 3 |
CEILING() | 将参数沿绝对值增大的方向,舍入为最接近的整数 |
步骤如下图所示:
2.3.2 设置分页
示例要将每个分组进行分页展示,那么需要从小组序号为 2 的小组开始进行「行前分页」。
选中 A4 单元格选择「条件属性」,添加属性「分页」,选择「行前分页」,条件类型选择「普通」,操作符选择「不等于字符串 1」。如下图所示:
2.4 页内合计
2.4.1 页合计
1)合并 B5、C5 单元格,输入文本:页合计,选中 D5 单元格,「单元格元素>插入元素」选择插入公式 sum(D4) 。
2)这里的页合计实际上是对前面的每个分组进行合计,故需要将 D5 单元格的左父格设置为「自定义>A4」。如下图所示:
2.4.2 总合计
合并 B6、C6 单元格,输入文本:总合计,在 D6 单元格中插入 sum(D4) 公式进行求和即可。
2.5 设置重复行、隐藏列
1)选择第 1 行至第 3 行,右键单击,选择「设置重复标题行」,如下图所示:
2)选中第 5 行,选择「设置重复结尾行」,如下图所示:
2)选中 A 列,单击鼠标右键,选择「隐藏」即可将 A 列隐藏。
2.6 效果预览
2.6.1 PC 端
保存报表,点击「分页预览」,效果如 1.2 节所示。
2.6.2 移动端
App 端和 HTML5 端均支持,效果如下图所示:
3. 模板下载
已完成模板可参见:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\Pagination\页内合计.cpt
点击下载模板:双向扩展求页内合计.cpt