反馈已提交

网络繁忙

常用函数集合插件

  • 文档创建者:漩涡
  • 历史版本:56
  • 最近更新:Catqiu 于 2022-11-28
  • 1. 描述

    1.1 版本

    报表服务器版本 JAR 包版本插件版本
    11.02021-08-30V9.3

    1.2 应用场景

    把一些常用的函数放到插件里面来,方便用户使用。

    2. 插件介绍

    2.1 插件安装

    点击下载插件:常用函数集合插件

    设计器插件安装方法参照:设计器插件管理

    服务器安装插件方法参照:服务器插件管理

    2.2 操作方法

    右键单元格,选择单元格元素>插入公式,在弹出的公式定义界面,点击插件函数,鼠标左键双击函数名即可插入函数,如下图所示:
    Snag_234a4909.png

    2.3 函数简介

    函数名
    简介 
    ScriptEval该函数中可以使用 JavaScript 脚本,避免嵌套各种 IF、SWITCH 函数的写法
    StringReverse把给定的参数字符串做倒转
    StringFind查找字符串包含的字符串索引
    StringMatch判断字符串是否符合给定的正则表达式
    StringFetch根据正则表达式提取符合的字符串,最终返回一个数组,如果有第三个参数,则表示返回数组中第三个参数表示的索引位置的值
    StringPinyin输出给定字符串的拼音
    StringShortPinyin输出给定字符串的拼音首字母(小写)
    StringSwapCase交换字符串中字母的大小写
    NumberToEnglish将数字转换成英文
    GetIP传递内置的 sessionID 参数,获取当前访问的用户的 IP 地址
    ProcessErrorValue处理函数返回错误值
    JSONPathFinder

    从 JSON 文本中查找符合条件的结果,JSON 支持文本、文件路径以及 URL

    可以在单元格中插入公式=JSONPathFinder("http://fine-doc.oss-cn-shanghai.aliyuncs.com/book.json", "$.store.book[*].author") 查看结果

    MathFrequency统计单词出现的次数和频率
    MathVariance
    求数组中元素的方差
    MathStandardDeviation求数组中元素的标准差
    MathSumOfSquares
    求数组中元素的平方和
    MathGeometricMean求数组中元素的几何平均数
    MathMean求数组中元素的算术平均数
    EncryptShaHexSHA 加密
    EncryptSha256HexSHA256 加密
    EncryptSha384HexSHA384 加密
    EncryptSha512HexSHA512 加密
    EncryptMd5HexMD5 加密
    EncryptDesDES 加密。第一个参数为要加密的文本,第二个参数为加密的 key,key 为 8 位的随机不固定字符串
    DecryptDesDES 解密。第一个参数为要解密的文本,第二个参数为解密所需要的 key
    HtmlFinderHTML 页面元素查找函数
    Image将给定的参数转换为图片,支持本地文件、远程文件以及相对路径
    StringConditionConcat根据条件拼接给定数组中的符合条件的元素,内置参数 index 表示索引位置,item 表示元素值

    3. 详细介绍

    下面逐条介绍每个函数的使用方法。

    3.1 ScriptEval

    安装插件后,可以在 SciptEval 函数中使用 JavaScript 语法。 

    1)参数说明

    ScriptEval(参数,参数名 1,参数值 1,参数名 2,参数值 2,……):第一个参数需要是一个字符串,字符串中是一个合法的 JavaScript 表达式,后续的参数分别表示 JavaScript 的参数名1,参数值1,参数名2,参数值2等等,由于参数名和参数值总是成对出现的,所以总的参数的个数必须是奇数个,设定的参数名可以在 JavaScript 中使用。 

    注:对 JavaScript 表达式的唯一要求是符合 JavaScript 语法并且有返回值。例如: ScriptEval('return Math.max(p1, p2)', "p1", A1, "p2", B1)等价于 max(A1, B1)

    2)公式中判断

    在模板中 A4 单元格向下扩展,值为[1,2,3,4,5],B4 单元格插入以下条件:

    当 A4 单元格的值大于 4 的时候,返回 A4 * 2 的值,当 A4 单元格的值小于4且大于1的时候,返回 A4 减2的绝对值,其他情况返回 A4 单元格值的2次方。

    传统的函数写法为:

    if(A4 > 4, A4 * 2, if(and(A4 < 4, A4 > 1), abs(A4 - 2), power(A4, 2)))

    ScriptEval 函数写法为:

    ScriptEval('if(a > 4) {return a * b;} else if (a < 4 && a > 1){return Math.abs(a - b);} else {return Math.pow(a, b)}', "a", A4, "b", 2)

    可以看到结果完全没有差别,但是使用 JavaScript 语法的表达方式更加灵活。 

    Snag_238074e5.png

    3)数组过滤

    在 B4 单元格中插入如下公式,可以过滤出 A4 单元格中所有的偶数值并作为一个数组返回。B4 单元格不扩展且父子格为无。

    ScriptEval('var r = [];origin.forEach(function(item, i){if(item % 2 == 0){r.push(item);}});return r;',"origin",A4)

    Snag_2376d69e.png

    3.2 StringReverse

    1)说明

    StringReverse(参数):反转字符串,参数是一个字符串。

    2)示例

    StringReverse("abc") 返回cba

    3.3 StringFind

    1)说明

    查找字符串包含的字符串索引。

    2)示例

    StringFind("ba", "a"):返回 a 在字符串中第一次出现的位置1

    StringFind("ba", "c")表示当查找不到该字符串时返回-1

    注:位置从 0 开始数起。即 StringFind("ba", "b")返回 0。

    函数可以传递第三个参数,false 表示从尾部开始查找。

    3.4 StringMatch

    1)说明

    StringMatch(字符串,字符串):判断字符串是否符合字符串的正则表达式,结果符合返回 true,反之返回 false。

    2)示例

    StringMatch("abcdefg", "(.*)abc(.*)")返回true

    3.5 StringFetch

    1)说明

    根据正则表达式提取符合的字符串,最终返回一个数组,如果有第三个参数,则表示返回数组中第三个参数表示的索引位置的值。

    2)示例

    StringFetch("2012-08-12 2012-12 abcde 2012-08-23", "\\d{4}[ /-]{1}\\d{2}([ /-]{1}\\d{2})?")返回2012-08-12,2012-12,2012-08-23

    StringFetch("2012-08-12 2012-12 abcde 2012-08-23", "\\d{4}[ /-]{1}\\d{2}([ /-]{1}\\d{2})?", 2)返回2012-08-23

    关于正则表达式的介绍可参考文档:正则表达式定义规则

    3.6 StringPinyin

    1)说明

    StringPinyin(字符串,参数1,参数2):输出给定字符串的拼音。

    参数1表示拼音之间的间隔符。

    参数2表示拼音的输出格式,1代表不输出音调,-1代表音调用数字表示。

    2)示例

    StringPinyin("你好啊", "  ", -1)返回ni3  hao3  a1

    3.7 StringShortPinyin

    1)说明

    输出给定字符串的拼音首字母(小写)。

    2)示例

    StringShortPinyin("你好啊"):返回nha

    3.8 StringSwapCase

    1)说明

    交换字符串中字母的大小写。

    2)示例

    StringSwapCase("abcDeFg"):返回ABCdEfG

    3.9 NumberToEnglish

    1)说明

    将数字翻译成英文。

    2)示例

    NumberToEnglish("1234567"):返回One Million, Two Hundred And Thirty-Four Thousand, Five Hundred And Sixty-Seven

    3.10 GetIP

    1)说明

    传递内置的 sessionID 参数,获取 IP 地址。

    2)示例

    GetIP():返回0:0:0:0:0:0:0:1

    3.11 ProcessErrorValue

    1)说明

    处理返回错误值的公式。一般函数发生错误时,会输出 #ERROR_NAME 之类的,这个函数可以在函数返回值为错误值的时候,输出自定义的值,其他值不变。

    2)示例

    ProcessErrorValue(SQRT(), "错误的值")返回错误的值

    3.12 JSONPathFinder

    1)概念

    设计报表时,并非所有的数据都是报表能直接识别的字符串或者数组,有时是以 JSON 格式传递过来的数据,这个时候,我们就需要使用 JSONPathFinder 函数来针对不同的查询条件获取到我们想要的数据。

    2)注意事项

    3)示例

    假如有这样的 JSON 结构的数据:

    这是一个描述书店的 JSON 数据,现在需要从里面查询出所有价格小于10的书的名字,只需要插入如下公式即可:

    JSONPathFinder("http://fine-doc.oss-cn-shanghai.aliyuncs.com/book.json","$.store.book[?(@.price<10)].title")

    符合条件的书共有两本,所以该公式将返回一个数组:[Sayings of the Century,Moby Dick]

    222

    3.13 MathFrequency

    1)说明

    统计单词出现的次数和频率。

    2)示例

    MathFrequency([1, 3, 2, 4, 2], 3):返回1,表示数组中3只出现了一次。

    MathFrequency([1, 3, 2, 4, 2], 3,3):返回0.2,表示3出现的频率为 0.2,即如果给定了第三个参数,那么将表示为频率。

    3.14 MathVariance

    1)说明

    求数组中元素的样本方差。

    2)示例

    MathVariance(1,2,3,4,5) :返回2.5

    3.15 MathStandardDeviation

    1)说明

    求数组中元素的标准差。

    2)示例

    MathStandardDeviation(1,2,3,4,5)返回1.5811388300841898

    3.16 MathSumOfSquares

    1)说明

    求数组中元素的平方和。

    2)示例

    MathSumOfSquares(1,1,2,4,5): 返回47

    3.17 MathGeometricMean

    1)说明

    求数组中元素的几何平均数。

    2)示例

    MathGeometricMean(1,1,2,4,5):返回2.0912791051825463

    3.18 MathMean

    1)说明

    求数组中元素的算术平均数。

    2)示例

    MathMean(1,1,2,4,5)返回2.6

    3.19 EncryptShaHex

    1)说明

    SHA 加密。

    2)示例

    EncryptShaHex("abc"):加密结果为a9993e364706816aba3e25717850c26c9cd0d89d

    EncryptShaHex(123):加密结果为40bd001563085fc35165329ea1ff5c5ecbdbbeef

    注:固定字符串加密时一定要带英文双引号,数字加密加不加都可以。

    3.20 EncryptSha256Hex

    1)说明

    SHA256 加密。

    2)示例

    EncryptSha256Hex("abc")加密结果为ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

    EncryptSha256Hex(123):加密结果为 a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3

    注:固定字符串加密时一定要带英文双引号,数字加密加不加都可以。

    3.21 EncryptSha384Hex

    1)说明

    SHA384 加密。

    2)示例

    EncryptSha384Hex("abc"):加密结果为 [B@3391f875

    EncryptSha384Hex(123):加密结果为 [B@202bddc

    注:固定字符串加密时一定要带英文双引号,数字加密加不加都可以。

    3.22 EncryptSha512Hex

    1)说明

    SHA512加密。

    2)示例

    EncryptSha512Hex("abc"):加密结果为 


    ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f

    EncryptSha512Hex(123):加密结果为


    3c9909afec25354d551dae21590bb26e38d53f2173b8d3dc3eee4c047e7ab1c1eb8b85103e3be7ba613b31bb5c9c36214dc9f14a42fd7a2fdb84856bca5c44c2

    注:固定字符串加密时一定要带英文双引号,数字加密加不加都可以。

    3.23 EncryptMd5Hex

    1)说明

    MD5 加密。

    2)示例

    EncryptMd5Hex("abc"):加密结果为900150983cd24fb0d6963f7d28e17f72

    EncryptMd5Hex(123):加密结果为 202cb962ac59075b964b07152d234b70

    注:固定字符串加密时一定要带英文双引号,数字加密加不加都可以。

    3.24 EncryptDes

    1)说明

    DES 加密。

    EncryptDes(参数1,参数2):第一个参数为要加密的文本,第二个参数为加密的 key。

    2)示例

    如下图所示,EncryptDes(A1,B1):返回LDiFUdf0iew=

    注:密钥需为8位的随机不固定字符串。

    222

    注:固定字符串加密时一定要带英文双引号,数字加密加不加都可以。

    3.25 DecryptDes

    1)说明

    DES 解密。

    DecryptDes(参数1,参数2):第一个参数为要解密的文本,第二个参数为解密所需要的 key。

    2)示例

    如下图所示,DecryptDes(A1,B1):返回123

    222

    3.26 HtmlFinder

    1)说明

    HTML 页面元素查找函数。

    HtmlFinder(参数1,参数2):第一个参数为要查找的 HTML 页面的地址,第二个参数为查询的 DOM 标记。

    2)示例

    HtmlFinder("http://www.baidu.com", "a[href]"):可以查找到百度首页的所有超级链接内容。

    其他语法规则可以参照:Use selector-syntax to find elements

    3.27 Image

    将给定的参数转换为图片,支持本地文件、远程文件以及相对路径。

    3.28 StringConditionConcat

    1)说明

    根据条件拼接给定数组中的符合条件的元素,内置参数 index 表示索引位置,item 表示元素值。

    2)示例

    StringConditionConcat(["两个", "b", "黄鹂", "asd", "鸣翠柳"], index % 2 = 1):返回两个黄鹂鸣翠柳

    附件列表


    主题: 报表专题
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持