历史版本34 :其他函数概述 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. CLASS编辑

1)概述

语法CLASS(object)返回 object 对象的所属的类。
参数object

对象

返回值String-

2)示例

公式结果备注
CLASS(121)class java.lang.Integer-

2. CORREL——求相关系数编辑

1)概述

语法CORREL(array1,array2)求两个相同长度数据系列的相关系数(与Excel的同名函数作用相同)。

参数

1

array1

数据系列1

参数

2

array2

数据系列2

返回值Number相关系数的取值范围是[-1,1]之间的数。相关系数的绝对值越大,表示误差越小。

2)注意事项

  •  Array1 和 Array2 的数据点的个数必须相同。

  • 如果数组或引用参数包含文本、逻辑值或空白单元格,则这些值将被忽略;但包含零值的单元格将计算在内。

  • 函数计算结果出现负数表示负相关。

3)示例

公式结果备注
CORREL([1,2,3],[2,4,6])1-

3. EVAL——返回表达式 exp 计算后的结果编辑

1)概述

语法EVAL(exp)返回表达式 exp 计算后的结果
参数exp

一个表达式形式字符串。

返回值Number-

2)注意事项

  • 只要 EVAL 中的参数 exp 最终可以转化成一表达式形式的字符串。比如"sum(2,4)","2+7"等等,那么它就可以被计算。

3)示例

公式结果备注
EVAL("2+5")7-
EVAL("count(2,3)")2-
EVAL("sum"+"(2,3,5)")10-
EVAL(IF(true, "sum", "count") + "(1,2,3,4)")10-
EVAL(IF(false, "sum", "count") + "(1,2,3,4)")4-

4. INDEX——返回位置编辑

1)概述

语法INDEX(key,val1,val2,...)返回 key 在 val1,val2,... 所组成的序列中的位置,不存在于序列中则返回参数的个数。
参数1exp

key 和 valn 可以是任意类型。

参数2val1,val2,...
返回值Number-

2)示例

公式结果备注
INDEX(2,2)1-
INDEX(2,1,2)2-
INDEX(2,4,5,6)4-
INDEX("b","b","o","y")1-

5. ISNULL——判断是否为空编辑

1)概述

语法ISNULL(object)判断对象中所有的值是否全部都是 NULL 或者为空字符串。
参数object

需要判断的对象,结果为空或null,返回 true,否则返回 false。

返回值String
-

2)示例

输入公式:ISNULL(A1),预览报表,如下图所示:

1609748129767918.png

3)视频教程:ISNULL 函数

6. LET——局部变量赋值编辑

1)概述

语法LET(变量名,变量值,变量名,变量值,..., 表达式)局部变量赋值函数。
参数1变量名

必须是合法的变量名,以字母开头,可以包括字母,数字和下划线。 

参数2变量值参数的个数 N 必须为奇数,最后一个是表达式,前面是 N-1(偶数)为局部变量赋值对。 
参数3表达式根据前面的 N-1 个参数赋值后计算出来的结果,这些变量赋值只在这个表达式内部有效。
返回值Number
-

2)示例

公式结果备注
LET(a, 5,b, 6, a+b)11-

7. MEDIAN——中位数编辑

MEDIAN(array1):返回数据系列的中值(与 Excel 的同名函数作用相同)。

1)当数据元素数量是奇数时,取最中间的元素。

示例结果
MEDIAN([1,2,3])2

2)当数据元素数量是偶数时,取最中间两个元素的算术平均值。

示例结果
MEDIAN([1,2,3,-1])1.5

注:在报表服务器版本为 8.0 及以上时,先将数据元素进行排序,再取中位数,结果为 1.5,这样的结果正确;而在报表服务器为 8.0 之前,报表不进行排序,直接去掉左右两边的值,结果为 2.5,这样的结果不正确。

8. NVL——返回第一个不为 null 的 value 值编辑

1)概述

语法NVL(value1,value2)返回第一个不为 null 的 value 值。如果 value1 不为 null,则返回 value1 的值,否则返回 value2 的值,如果 value1 和 value2 都是 null,则返回 null。 
参数1value1

可以为任意数,也可以为 null。 

参数2value2可以为任意数,也可以为 null。 
返回值Number
-

2)注意事项

此处的 NVL(value1,value2)为短路运算符。即当第一个不为空的情况下,直接返回第一个的值,对后面的将不再运算。也可以为 null。

3)示例

公式结果
NVL(12,20)12
NVL(null,12)12

9. RANK——返回秩编辑

1)概述

语法RANK(number,ref,order)返回一个数在一个数组中的秩。(如果把这个数组排序,该数的秩即为它在数组中的序号)。
参数1number

所求秩的数,可以是 Boolean 型,true=1,false=0。

参数2Ref可以是数组,引用,或一系列数,非实数的值被忽略处理。接受Boolean型,zhitrue=1,false=0。
参数3Order指定求秩的参数,非零为升序,零为降序。
返回值Number
-

2)注意事项

RANK 对重复的数返回相同的秩,但重复的数影响后面的数的秩,比如,在一组升序排列的整数中,如果 5 出现了 2 次,并且秩为 3,那么 6 的秩为 5 (没有数的秩是 4)。

3)示例


示例结果

如果A1:A5 = 6, 4.5, 4.5, 2, 4 

则:

RANK(A1,A1:A5,1)

5

升序排列时,A1 中的 6 的秩为 5

RANK(3,1,2,"go",3,4,1)

3

"go"被忽略

4)视频教程:RANK 函数

10. SEQ——执行次数编辑

SEQ():返回数值,在整个报表执行过程中,返回该函数被第几次执行。


示例结果
SEQ()第一次执行时,结果为 1
第二次执行时,结果为 2

视频教程:SEQ 函数

11. STDEV——标准差编辑

STDEV(array1):计算数据系列的标准偏差(与 Excel 的同名函数作用相同)。

注:使用该函数,数据值必须要有多个,单个值无法计算偏差,预览报错。

示例结果
STDEV([1,2,3])1

12. TOIMAGE——返回图片编辑

1)概述

语法TOIMAGE(path)显示指定路径下的图片。
参数path

图片路径

2)注意事项

此处默认开启了图片缓存功能以加速报表的生成。如不需要缓存,请在参数后面追加值 FALSE。

不支持模拟计算,模拟计算详情参见:2.4节

3)示例

公式结果备注
TOIMAGE("D:/fr.png",false)显示图片

4)视频教程TOIMAGE 函数

13. WEBIMAGE——显示网页图片编辑

1)概述

语法WEBIMAGE(path)显示网页上的图片。可以提升 Web 图片加载速度。
参数path

图片网页

2)注意事项

不支持模拟计算,模拟计算详情参见:2.4节

3)示例

公式
结果
WEBIMAGE('http://www.fanruan.com/images/index2.jpg')显示图片

效果如下图所示:

4)视频教程WEBIMAGE 函数

14. UUID——返回随机数编辑

1)概述

语法UUID()返回随机的 UUID。
参数空/32

返回36位/32位随机数

返回值String-

2)示例

目前只支持两种位数的随机数,如下:

公式结果备注
UUID()返回36位随机数,例如 ad342e21-fc60-4de3-8f20-126f6ac60a50-
UUID(32)返回32位随机数,例如 4400a7ddeece4e568803a64634edd6e4-

在设计器中添加公式如下图所示:

得到结果预览如下图所示:

1609745394382317.png

15. QUERY——解析 JSON 文本编辑

FineReport10.0(2019-03-01)版本之后,提供了一个用于解析 JSON 文本的函数,有以下两个作用:

  • 用于提取内置参数 $fine_position 中的值

  • 用于提取 JSON 格式的文本中的特定值,用于到报表中展示,避免使用报表中的文本函数进行各种切割。

该函数的第一个参数为待处理的字符串,可以是一个 JSON 格式的字符串,也可以是一个普通字符串。

该函数的第二个参数是查询语句,是一个标准的 JavaScript 语句,其中用 $ 表示第一个参数的值,可以参与运算。

15.1 用法一

用于提取内置参数 $fine_position 中的值

示例:新建报表输入公式:=QUERY($fine_position, "$ instanceof Array ? $.map(el => el.jobTitle) : $.jobTitle")

如下图所示:

注:如需获取部门的值,可输入公式:QUERY($fine_position, "$ instanceof Array ? $.map(el => el.departments) : $.departments")

将模板挂出至平台,不同用户登录平台后,模板将根据登录平台用户的职位。

例如,技术支持部长 Alice 登录,显示其职位,如下图所示:

15.2 用法二

用于提取 JSON 格式的文本中的特定值,用于到报表中展示,避免使用报表中的文本函数进行各种切割。

函数调用结果
QUERY("{\"job\":\"司机\",\"age\":45}", "$.age")45
QUERY("{\"job\":\"司机\",\"age\":45}", "function() {return $.age > 50 ? 100 : 0}")0
QUERY("[\"a\",\"b\"]", "$")["a","b"]
QUERY("[\"a\",\"b\"]", "$[1]")"b"
QUERY("{\"value\":20.5,\"status\":true}", "$.status")true
QUERY("{\"value\":20.5,\"status\":true}", "$.value")20.5
QUERY("hello", "$")"hello"
QUERY("hello", "$.slice(0, 3)")"hel"
QUERY("hello", "$ + \" world\"")"hello world"