1. 概述
1.1 应用场景
「高级排序」是指:报表根据某「数据列」设置的公式和排列顺序进行的排序。相当于扩展前排序,依赖于「数据列」。
1)希望按照某列数据排序,例如按照「运货费」升序排序,如下图所示:
2)对于记录数较少,又没有排序规则的「数据列」,可以利用公式自定义排列顺序。例如按尺码大小排序,如下图所示:
注:高级排序中的所有设置都可以在扩展后排序中设置实现,但高级排序性能比扩展后排序好,因此建议能用高级排序实现的就用高级排序,不能用高级排序实现的,再使用 扩展后排序。
1.2 功能简介
高级排序必须在「最父格」单元格设置,例如 C1 单元格的左父格是 B1,B1 单元格的左父格是 A1,那么 A1 即为「最父格」。
双击「最父格」所在单元格,弹出「数据列」设置对话框,选择「高级」,可以看到「排列顺序」默认为「不排序」,公式输入框不可编辑。如下图所示:
选择「升序」或「降序」后,公式输入框可编辑,公式中可直接输入「数据列的名称」或「包含数据列的公式」进行排序设置。不填写公式时,则默认根据「当前列」进行升序或降序。
也可以在「单元格元素>高级」中设置「排列顺序」。
2. 高级排序-数据列顺序
我们以内置模板 Details_1.cpt 为例,来看下如何使用「高级排序」使报表根据数据列「运货费」进行升序排序。
2.1 准备模板
打开模板:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Primary\DetailReport\Details_1.cpt
2.2 设置高级排序
报表的「最父格」为 A2 单元格,双击 A2 单元格,点击「高级」,排序顺序选择「升序」,然后点击公式的编辑按钮,进入公式定义对话框,直接输入数据列名称「运货费」,或者双击「变量>数据项」中的「运货费」,最后点击「确定」。如下图所示:
2.3 效果预览
2.3.1 PC 端
保存报表,点击「分页预览」,可以看到数据根据「运货费」升序排序了:
2.3.2 移动端
App 端和 HTML5 端均支持,效果如下图所示:
3. 高级排序-自定义顺序
下面我们用一个内置数据集,来看下如何使用「高级排序」设置自定义排列顺序。
3.1 准备数据
新建一个普通报表,新建内置数据集,设置两个字段分别为「size」和「number」。size 由 XS 至 XXL,需打乱顺序;number 随意设置,如下图所示:
3.2 报表设计
将数据列分别拖入 A2、B2 单元格,在 A1、B1 单元格输入对应标题, 自定义表格样式,如下图所示:
3.3 设置高级排序
报表的「最父格」为 A2 单元格,选中 A2 单元格,选择「单元格元素>高级」,设置排列顺序为「升序」,输入公式:switch($$$,"XS",1,"S",2,"M",3,"L",4,"XL",5,"XXL",6)或者INDEX($$$,"XS","S","M","L","XL","XXL")。
公式说明:
$$$ 表示当前数据列
switch 函数的作用是:当前值为 XS 则返回 1,当前值为 S 则返回 2,以此类推
INDEX 函数的作用是:返回当前值在 "XS","S","M","L","XL","XXL" 序列中的位置
最后按返回的数字大小进行排序
步骤如下图所示:
3.4 效果预览
3.4.1 PC 端
保存报表,点击「分页预览」,数据即以:XS、S、M、L、XL、XXL 的顺序进行排列,效果如下图所示:
3.4.2 移动端
App 端和 HTML5 端均支持,效果如下图所示:
4. 模板下载
已完成模板可参见:
%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\高级排序-数据列顺序.cpt
%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\SpecialSubject\OrderReport\高级排序-自定义顺序.cpt
点击下载模板: