1. 描述
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 | 求陣列中元素的算術平均數 |
EncryptShaHex | SHA 加密 |
EncryptSha256Hex | SHA256 加密 |
EncryptSha384Hex | SHA384 加密 |
EncryptSha512Hex | SHA512 加密 |
EncryptMd5Hex | MD5 加密 |
EncryptDes | DES 加密。第一個參數為要加密的正文,第二個參數為加密的 key,key 為 8 位的隨機不固定字串 |
DecryptDes | DES 解密。第一個參數為要解密的正文,第二個參數為解密所需要的 key |
HtmlFinder | HTML 頁面元素尋找函式 |
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"):加密結果為
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
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):傳回兩個黃鸝鳴翠柳