1. 概述
1.1 应用场景
直接使用 seq( ) 的方法,分页预览会使序号承接上一页的序号继续递增。
例如,第一页显示了 55 行,第二页序号直接从 56 开始。如下图所示:
希望分页预览报表时,每一页的序号计数重新从 1 开始计算。如下图所示:
1.2 实现思路
注:本方案仅适用于分页预览。
1)原有序号虽然是递增的,但是保证了每一行都是唯一性的。
2)在原有序号的基础,判断当前序号在本页内的位置,每页即可重新得到从 1 开始的序号。
2. 示例
2.1 新建模板
新建一张普通报表。如下图所示:
2.2 准备数据
新建数据库查询 ds1 ,输入 SQL 查询语句:SELECT * FROM 订单明细 。如下图所示:
2.3 设计报表
1)C1~H1 单元格输入文本,C2~H2 单元格拖入相应的数据列,设计报表样式。如下图所示:
2)批量选中 C2~H2 单元格,点击右侧的「单元格元素」,数据设置为「列表」。如下图所示:
3)A2 单元格插入公式为:seq(),A2 单元格的左父格自定义为 C2 单元格。如下图所示:
4) B1 单元格输入文本,B2 单元格插入公式:if(COUNT({A2})=1,1,inarray(A2,{A2})),设计报表样式。如下图所示:
注:当一页只有一行时,{A2} 获取到的是一个值,不会当成数组来处理,而 inarray 第二个参数必须是数组,所以需要 if 条件判断。
公式说明如下表所示:
公式 | 说明 |
---|---|
{A2} | 当前页中 A2 单元格扩展出来的所有值 |
COUNT({A2}) | 当前页中 A2 单元格扩展出来的所有值的个数 |
inarray(A2,{A2}) | 返回当前 A2 单元格的值在当前页中 A2 单元格扩展出来的所有值的数组中的位置 |
if(COUNT({A2})=1,1,inarray(A2,{A2})) | 如果当前页中 A2 单元格只扩展出一个值,返回1;否则返回当前 A2 单元格的值在当前页中 A2 单元格扩展出来的所有值的数组中的位置 |
5)B2 单元格的左父格自定义为 C2 单元格。如下图所示:
6)设置第一行重复标题行。如下图所示:
7)隐藏 A 列。如下图所示:
2.4 效果预览
1)PC 端保存模板,选择「分页预览」,实现效果如 1.1 节中所示。
2)移动端APP 效果与 HTML5 效果相同,如下图所示:
3. 模板下载
点击下载已完成模板:每页序号重新开始.cpt