常用函式集合插件

1. 描述

1.1 版本

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

1.2 應用場景

把一些常用的函式放到插件裏面來,方便使用者使用。

2. 插件介紹

2.1 插件安裝

點選下載插件:常用函式集合插件

設計器插件安裝方法參照:設計器插件管理

伺服器安裝插件方法參照:設計器插件管理

2.2 操作方法

右鍵儲存格,選擇儲存格元素>插入公式,在彈出的公式定義介面,點選插件函式,滑鼠左鍵雙擊函式名即可插入函式,如下圖所示:

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 文法的表達方式更加靈活。 

3)陣列過濾

在 B4 儲存格中插入如下公式,可以過濾出 A4 儲存格中所有的偶數值並作為一個陣列傳回。B4 儲存格不擴展且父子格為無。

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

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)注意事項

  • JSON Path 查詢教程,詳細內容參見:Jayway JsonPath

  • 只支援 get 請求類型,不支援 post 。

  • JSON資料集 也可以對 JSON 資料取數。

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]

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位的隨機不固定字串。

注:固定字串加密時一定要帶英文雙引號,數字加密加不加都可以。

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):傳回兩個黃鸝鳴翠柳

附件列表


主題: 報表專題
已經是第一篇
已經是最後一篇
  • 有幫助
  • 沒幫助
  • 只是瀏覽
中文(繁體)

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

9s后關閉

獲取幫助
線上支援
獲取專業技術支援,快速幫助您解決問題
工作日9:00-12:00,13:30-17:30在线
頁面反饋
針對當前網頁的建議、問題反饋
售前咨詢
業務咨詢
電話:0933-790886或 0989-092892
郵箱:taiwan@fanruan.com
頁面反饋
*問題分類
不能為空
問題描述
0/1000
不能為空

反馈已提交

网络繁忙

反饋已提交

網絡繁忙