历史版本34 :常用函数集合插件 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1.描述编辑

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

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

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

使用函数插件的方法:右键单元格,单元格元素>插入公式,点击插件函数,如下图:
222

下面是各个函数的简介:

函数 
简介 
  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.详细介绍编辑

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

2.1 ScriptEval 函数

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

2.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)

2.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 语法有更灵活实现和更丰富的表达方式。 

222

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

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

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

222

2.2 StringReverse 函数

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

例如:StringReverse("abc") 返回 cba。


2.3 StringFind 函数

查找字符串包含的字符串的索引。StringFind("ba", "a"),返回 a 在字符串中第一次出现的位置:1;

当查找不到该字符串是返回 -1。例如:StringFind("ba", "c") 返回 -1。

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

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


2.4 StringMatch 函数

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

例如:StringMatch("abcdefg", "bc")返回 true。


2.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。

关于正则表达式,详细可参考 正则表达式定义规则


2.6 StringPinyin 函数

输出给定字符串的拼音。StringPinyin("你好啊", "  ", 1)返回这个字符串的拼音:ni  hao  a。

第二个参数表示拼音之间的间隔符,第三个参数表示拼音的输出格式,1 表示不输出音调,-1 表示音调用数字表示。

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


2.7 StringShortPinyin 函数

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

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


2.8 StringSwapCase 函数

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

StringSwapCase("abcDeFg")返回 ABCdEfG。


2.9 NumberToEnglish 函数

将数字翻译成英文。

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


2.10 GetIP 函数

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

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


2.11 ProcessErrorValue 函数

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

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


2.12 JSONPathFinder 函数

2.12.1 说明

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


2.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],可以设置该公式所在的格子向下扩展,就会看到两行数据了。

222


2.12.3 JSON Path 查询教程

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


2.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


2.14 MathVariance 函数

求数组中元素的方差。

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


2.15 MathStandardDeviation 函数

求数组中元素的标准差。

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

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


2.16 MathSumOfSquares 函数

求数组中元素的平方和。

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


2.17 MathGeometricMean 函数

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

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


2.18 MathMean 函数

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

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


2.19 EncryptShaHex 函数

SHA256 加密。

EncryptShaHex(abc)加密结果 da39a3ee5e6b4b0d3255bfef95601890afd80709


2.20 EncryptSha256Hex 函数

 SHA256 加密。

EncryptSha256Hex(abc)加密结果:

e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855


2.21 EncryptSha384Hex 函数

SHA384 加密。

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


2.22 EncryptSha512Hex 函数

SHA512加密。

EncryptSha512Hex(abc)加密结果:

cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e


2.23 EncryptMd5Hex 函数

MD5 加密。

EncryptMd5Hex(abc)加密结果:

d41d8cd98f00b204e9800998ecf8427e


2.24 EncryptDes函数

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

如下图所示:返回 LDiFUdf0iew=

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


2.25 DecryptDes 函数

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

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

222

返回 123。


2.26 HtmlFinder 函数

HTML 页面元素查找函数。第一个参数为要查找的 HTML 页面的地址,第二个参数为查询的 DOM 标记。

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

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

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


2.27 Image 函数

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


2.28 StringConditionConcat 函数

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

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


3. 移动端编辑

支持移动端。

支持 H5。