常用函数集合插件

编辑
  • 文档创建者:漩涡
  • 浏览次数:11860次
  • 编辑次数:34次
  • 最近更新:珠珠 于 2019-04-08
  • 1.描述

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

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

    服务器安装插件方法参照服务器插件管理
    使用函数插件的方法:右键单元格,单元格元素>插入公式,点击插件函数,如下图:

    下面是各个函数的简介:

    函数 
    简介 
      ScriptEval该函数中可以使用javascript脚本,避免嵌套各种IF,SWITCH函数的写法。
      StringReverse把给定的参数字符串做倒转。
      StringFind查找字符串包含的字字符串的索引。
      StringMatch判断字符串是否符合给定的正则表达式。
      StringFetch根据正则表达式提取符合的字符串,最终返回一个数组,如果有第三个参数,则表示返回数组中第三个参数表示的索引位置的值。
      StringPinyin输出给定字符串的拼音。
      StringShortPinyin输出给定字符串的拼音首字母(小写)。
      StringSwapCase交换字符串中字母的大小写。
      NumberToEnglish将数字转换成英文。
      GetIP传递内置的sessionID参数,获取当前访问的用户的IP地址。
     ProcessErrorValue处理函数返回错误值。
     JSONPathFinder从JSON文本中查找符合条件的结果,JSON支持文本、文件路径以及URL。安装该插件后,可以在单元格中写上公式=JSONPathFinder("http://7xs469.com1.z0.glb.clouddn.com/test.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表示元素值。

    2.详细介绍

    下面逐条开始介绍各个函数的使用方法。

    1. ScriptEval函数

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

    1.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)。

    1.2 使用ScriptEval函数进行公式中判断

    在模板中A4格式是一个扩展格子(向下扩展),值为[1,2,3,4,5],加入我们需要让B4格子的值满足以下条件

    当A4的值大于4的时候,返回A4 * 2的值,当A4的值小于4且大于1的时候,返回A4减2的绝对值,其他时候,返回A4的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语法有更灵活实现和更丰富的表达方式。 


    1.3 使用ScriptEval函数进行数组过滤

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

    在单元格中写上如上的公式,可以过滤出A4中所有的偶数值并作为一个数组返回。 


    2. StringReverse函数

    StringReverse(参数):反转字符串。参数是一个字符串。
    例如:StringReverse("abc") 返回cba。

    3. StringFind函数
    查找字符串包含的字符串的索引。StringFind("ba", "a"),返回a在字符串中第一次出现的位置:1;
    当查找不到该字符串是返回-1。例如:StringFind("ba", "c")返回-1。
    注:位置从0开始数起。即StringFind("ba", "b")返回0。
    函数可以传递第三个参数,false表示从尾部开始查找。

    4. StringMatch函数
    判断字符串是否符合特定的正则表达式。StringMatch(字符串,字串),判断字串是否符合字符串的正则表达式,结果符合返回true;反之返回false;
    例如:StringMatch("abcdefg", "bc")返回true。

    5. StringFetch函数
    根据正则表达式提取符合的字符串,最终返回一个数组,如果有第三个参数,则表示返回数组中第三个参数表示的索引位置的值。
    例如: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。
    关于正则表达式,详细可参考正则表达式定义规则

    6. StringPinyin函数
    输出给定字符串的拼音。StringPinyin("你好啊", "  ", 1)返回这个字符串的拼音:ni  hao  a。
    第二个参数表示拼音之间的间隔符,第三个参数表示拼音的输出格式,1表示不输出音调,-1表示音调用数字表示。
    StringPinyin("你好啊", "  ", -1)返回:ni3  hao3  a1。

    7. StringShortPinyin函数

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

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

    8. StringSwapCase函数
    交换字符串中字母的大小写。
    StringSwapCase("abcDeFg")返回ABCdEfG。

    9. NumberToEnglish函数
    将数字翻译成英文。
    NumberToEnglish("1234567")将返回One Million, Two Hundred And Thirty-Four Thousand, Five Hundred And Sixty-Seven。

    10. GetIP函数
    传递内置的sessionID参数,获取IP地址。
    GetIP()返回0:0:0:0:0:0:0:1

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

    12.JSONPathFinder函数

    12.1 说明

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

    12.2 示例

    假如有这样的JSON结构的数据,见这里。这是一个描述书店的JSON数据,现在需要从里面查询出所有价格小于10的书的名字,只需要这样写公式即可:

    JSONPathFinder("http://7xs469.com1.z0.glb.clouddn.com/test.json","$.store.book[?(@.price<10)].title")

    符合条件的书共有两本,所以这个公式将会返回一个数组:[Sayings of the Century,Moby Dick],可以设置该公式所在的格子向下扩展,就会看到两行数据了。


    12.3 JSON Path查询教程

    可以参照这里:https://github.com/jayway/JsonPath/blob/master/README.md


    13. MathFrequency函数
    统计单词出现的次数和频率。

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

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


    14. MathVariance函数
    求数组中元素的方差。

    MathVariance(1,1,2,4,5)返回3.3


    15. MathStandardDeviation函数

    求数组中元素的标准差。

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

    或者,如图所示:MathStandardDeviation(A1);A1单元格写入数组;返回结果一致。



    16. MathSumOfSquares函数

    求数组中元素的平方和。

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


    17. MathGeometricMean函数

    求数组中元素的几何平均数。
    MathGeometricMean(1,1,2,4,5)返回2.0912791051825463

    18. MathMean函数
    求数组中元素的算术平均数。
    MathMean(1,1,2,4,5)返回2.6

    19. EncryptShaHex函数
    SHA256加密。

    EncryptShaHex(abc)加密结果da39a3ee5e6b4b0d3255bfef95601890afd80709


    20. EncryptSha256Hex函数

     SHA256加密。
    EncryptSha256Hex(abc)加密结果:
    e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

    21.  EncryptSha384Hex函数

    SHA384加密。

    EncryptSha384Hex(abc)加密结果:[B@175d5041


    22. EncryptSha512Hex函数

    SHA512加密。

    EncryptSha512Hex(abc)加密结果:

    cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e


    23. EncryptMd5Hex函数
    MD5加密。

    EncryptMd5Hex(abc)加密结果:

    d41d8cd98f00b204e9800998ecf8427e


    24. EncryptDes函数

    DES加密。第一个参数为要加密的文本,第二个参数为加密的key。

    如下图所示:返回LDiFUdf0iew=


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


    25. DecryptDes函数

    DES解密。第一个参数为要解密的文本,第二个参数为解密所需要的key。

    同上所示:第一个参数为:LDiFUdf0iew= 密钥为:12345678


    返回123。


    26. HtmlFinder函数
    Html页面元素查找函数。第一个参数为要查找的html页面的地址,第二个参数为查询的dom标记。

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

    返回:新闻,hao123,地图,视频,贴吧,登录,更多产品,关于百度,About Baidu,使用百度前必读,意见反馈

    其他语法规则可以参看这里:https://jsoup.org/cookbook/extracting-data/selector-syntax.


    27. Image函数

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


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

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


    3. 移动端

    支持移动端。

    支持h5。



    附件列表


    主题: 二次开发
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]