1.描述编辑
函数 | 详细 |
---|---|
ScriptEval | 该函数中可以使用javascript脚本,避免嵌套各种IF,SWITCH函数的写法。 |
StringReverse | 把给定的参数字符串做倒转。 |
StringFind | 查找第一个匹配的字符串,支持从头开始查找和从尾部开始查找。 |
StringMatch | 判断字符串是否符合给定的正则表达式。 |
StringFetch | 根据正则表达式抓取给定字符串中匹配的部分,以数组形式返回。 |
StringPinyin | 将中文转换为拼音。 |
StringShortPinyin | 将中文装换为拼音首字母。 |
StringSwapCase | 将字符串中的大小写字母调换大小写。StringSwapCase("abcDEF") 返回ABCdef。 |
NumberToEnglish | 将数字转换成英文。NumberToEnglish(1234567)将返回One Million, Two Hundred And Thirty-Four Thousand, Five Hundred And Sixty-Seven。 |
GetIP | 获取当前访问的用户的IP地址。 |
ProcessErrorValue | 处理函数返回错误值,一般函数发生错误时,会输出#ERROR_NAME之类的,这个函数可以在函数返回值为错误值的时候,输出自定义的值,其他值不变。 |
JSONPathFinder | 从JSON文本中查找符合条件的结果,JSON支持文本、文件路径以及URL。安装该插件后,可以在单元格中写上公式=JSONPathFinder("http://7xs469.com1.z0.glb.clouddn.com/test.json", "$.store.book[*].author")查看结果。 |
MathFrequency | 统计单词出现的次数和平率。MathFrequency([1, 3, 2, 4, 2], 3)返回1,表示数组中3出现了一次,如果给定了第三个参数,则返回0.2,表示3出现的频率为0.2。 |
MathVariance | 求数组中元素的方差。 |
MathStandardDeviation | 求数组中元素的标准差。 |
MathSumOfSquares | 求数组中元素的平方和。 |
MathGeometricMean | 求数组中元素的几何平均数。 |
MathMean | 求数组中元素的算术平均数。 |
EncryptShaHex | SHA加密。 |
EncryptSha256Hex | SHA256加密。 |
EncryptSha384Hex | SHA384加密。 |
EncryptSha512Hex | SHA512加密。 |
EncryptMd5Hex | MD5加密。 |
EncryptDes | DES加密。 |
DecryptDes | DES解密。 |
前言编辑
在FineReport中使用公式的时候,如果需要在公式中做判断,就需要使用IF或者SWITCH函数,这两个函数有时候还会嵌套,很不利于阅读。
解决方案编辑
使用常用函数插件:http://shop.finereport.com/ShopServer?pg=product&pid=512
使用了该插件后,可以在SciptEval函数中使用JavaScript语法。
下面我们来做一个对比:
在模板中A4格式是一个扩展格子(向下扩展),值为[1,2,3,4,5],加入我们需要让B4格子的值满足以下条件
当A4的值大于4的时候,返回A4 * 2的值,当A4的值小于4且大于1的时候,返回A4减2的绝对值,其他时候,返回A4的A4的2次方。
如果用传统的函数,写法大概是这样的
而如果使用ScriptEval函数写法大概是这样的
运行结果是这样的(把两种写法汇总到一起做对比)
可以看到结果完全没有差别,但是使用JavaScript语法有更灵活实现和更丰富的表达方式。
注意:对JavaScript表达式的唯一要求是符合JavaScript语法并且有返回值。例如ScriptEval('return Math.max(p1, p2)', "p1", A1, "p2", B1),等价于max(A1, B1)。
参数说明编辑
ScriptEval的第一个参数需要是一个字符串,字符串中是一个合法的JavaScript表达式,后续的参数分别表示JavaScript的参数名1,参数值1,参数名2,参数值2等等,由于参数名和参数值总是成对出现的,所以总的参数的个数必须是奇数个。设定的参数名可以在JavaScript中使用。
使用ScriptEval函数进行数组过滤编辑
在单元格中写上如上的公式,可以过滤出A4中所有的偶数值并作为一个数组返回。