1. CLASS
1)概述
文法 | CLASS(object) | 傳回 object 物件的所屬的類。 |
---|---|---|
參數 | object | 物件 |
傳回值 | String | - |
2)範例
公式 | 結果 | 備註 |
---|---|---|
CLASS(121) | class java.lang.Integer | - |
2. CORREL——求相關係數
1)概述
文法 | CORREL(array1,array2) | 求兩個相同長度資料系列的相關係數(與Excel的同名函式作用相同)。 |
---|---|---|
參數1 | array1 | 資料系列1 |
參數2 | array2 | 資料系列2 |
傳回值 | Number | 相關係數的取值範圍是[-1,1]之間的數。相關係數的絕對值越大,表示誤差越小。 |
2)注意事項
Array1 和 Array2 的資料點的個數必須相同。
如果陣列或引用參數包含正文、邏輯值或空白儲存格,則這些值將被忽略;但包含零值的儲存格將計算在內。
函式計算結果出現負數表示負相關。
3)範例
公式 | 結果 | 備註 |
---|---|---|
CORREL([1,2,3],[2,4,6]) | 1 | - |
3. EVAL——傳回表式 exp 計算後的結果
1)概述
文法 | EVAL(exp) | 傳回表式 exp 計算後的結果 |
---|---|---|
參數 | exp | 一個表式形式字串。 |
傳回值 | Number | - |
2)注意事項
只要 EVAL 中的參數 exp 最終可以轉化成一表式形式的字串。比如"sum(2,4)","2+7"等等,那麼它就可以被計算。
3)範例
公式 | 結果 | 備註 |
---|---|---|
EVAL("2+5") | 7 | - |
EVAL("count(2,3)") | 2 | - |
EVAL("sum"+"(2,3,5)") | 10 | - |
EVAL(IF(true, "sum", "count") + "(1,2,3,4)") | 10 | - |
EVAL(IF(false, "sum", "count") + "(1,2,3,4)") | 4 | - |
4. INDEX——傳回位置
1)概述
文法 | INDEX(key,val1,val2,...) | 傳回 key 在 val1,val2,... 所組成的序列中的位置,不存在於序列中則傳回參數的個數。 |
---|---|---|
參數1 | exp | key 和 valn 可以是任意型別。 |
參數2 | val1,val2,... | |
傳回值 | Number | - |
2)範例
公式 | 結果 | 備註 |
---|---|---|
INDEX(2,2) | 1 | - |
INDEX(2,1,2) | 2 | - |
INDEX(2,4,5,6) | 4 | - |
INDEX("b","b","o","y") | 1 | - |
5. ISNULL——判斷是否為空
1)概述
文法 | ISNULL(object) | 判斷物件中所有的值是否全部都是 NULL 或者為空字串 |
---|---|---|
參數 | object | 需要判斷的物件,結果為空或null,傳回 true,否則傳回 false。 |
傳回值 | String | - |
2)範例
輸入公式:ISNULL(A1),預覽報表,如下圖所示:
6. LET——區域性變數指派
1)概述
文法 | LET(變數名,變數值,變數名,變數值,..., 表式) | 區域性變數指派函式。 |
---|---|---|
參數1 | 變數名 | 必須是合法的變數名,以字母開頭,可以包括字母,數字和底線。 |
參數2 | 變數值 | 參數的個數 N 必須為奇數,最後一個是表式,前面是 N-1(偶數)為區域性變數指派對。 |
參數3 | 表式 | 根據前面的 N-1 個參數指派後計算出來的結果,這些變數指派只在這個表式內部有效。 |
傳回值 | Number | - |
2)範例
公式 | 結果 | 備註 |
---|---|---|
LET(a, 5,b, 6, a+b) | 11 | - |
7. MEDIAN——中位數
MEDIAN(array1):傳回資料系列的中值(與 Excel 的同名函式作用相同)。
1)當資料元件數量是奇數時,取最中間的元素。
範例 | 結果 |
---|---|
MEDIAN([1,2,3]) | 2 |
2)當資料元件數量是偶數時,取最中間兩個元素的算術平均值。
範例 | 結果 |
---|---|
MEDIAN(1,2,3,-1) | 1.5 |
注:在報表伺服器版本為 8.0 及以上時,先將資料元件進行排序,再取中位數,結果為 1.5,這樣的結果正確;而在報表伺服器為 8.0 之前,報表不進行排序,直接去掉左右兩邊的值,結果為 2.5,這樣的結果不正確。
8. NVL——傳回第一個不為 null 的 value 值
1)概述
文法 | NVL(value1,value2) | 傳回第一個不為 null 的 value 值。如果 value1 不為 null,則傳回 value1 的值,否則傳回 value2 的值,如果 value1 和 value2 都是 null,則傳回 null。 |
---|---|---|
參數1 | value1 | 可以為任意數,也可以為 null。 |
參數2 | value2 | 可以為任意數,也可以為 null。 |
傳回值 | Number | - |
2)注意事項
此處的 NVL(value1,value2)為短路運算子。即當第一個不為空的情況下,直接傳回第一個的值,對後面的將不再運算。也可以為 null。
3)範例
公式 | 结果 |
---|---|
NVL(12,20) | 12 |
NVL(null,12) | 12 |
9. RANK——傳回秩
1)概述
文法 | RANK(number,ref,order) | 傳回一個數在一個陣列中的秩。(如果把這個陣列排序,該數的秩即為它在陣列中的序號)。 |
---|---|---|
參數1 | number | 所求秩的數,可以是 Boolean 型,true=1,false=0。 |
參數2 | Ref | 可以是陣列,引用,或一系列數,非實數的值被忽略處理。接受Boolean型,zhitrue=1,false=0。 |
參數3 | Order | 指定求秩的參數,非零為升冪,零為降冪。 |
傳回值 | Number | - |
2)注意事項
RANK 對重複的數傳回相同的秩,但重複的數影響後面的數的秩,比如,在一組升冪排列的整數中,如果 5 出現了 2 次,並且秩為 3,那麼 6 的秩為 5 (沒有數的秩是 4)。
3)範例
範例 | 結果 |
---|---|
如果A1:A5 = 6, 4.5, 4.5, 2, 4 則: RANK(A1,A1:A5,1) | 5 升冪排列時,A1 中的 6 的秩為 5 |
RANK(3,1,2,"go",3,4,1) | 3 "go"被忽略 |
10. SEQ——執行次數
SEQ():傳回數值,在整個報表執行過程中,傳回該函式被第幾次執行。
範例 | 結果 |
---|---|
SEQ() | 第一次執行時,結果為 1 |
第二次執行時,結果為 2 |
11. STDEV——標準差
STDEV(array1):計算資料系列的標準偏差(與 Excel 的同名函式作用相同)。
注:使用該函式,資料值必須要有多個,單個值無法計算偏差,預覽報錯。
範例 | 結果 |
---|---|
STDEV([1,2,3]) | 1 |
12. TOIMAGE——傳回圖片
1)概述
文法 | TOIMAGE(path) | 顯示指定路徑下的圖片。 |
---|---|---|
参数 | path | 圖片路徑 |
2)注意事項
此處預設開啟了圖片快取功能以加速報表的生成。如不需要快取,請在參數後面追加值 FALSE。
不支援模擬計算,模擬計算詳情參見:2.4節。
3)範例
公式 | 結果 | 備註 |
---|---|---|
TOIMAGE("D:/fr.png",false) | 顯示圖片 |
13. WEBIMAGE——顯示網頁圖片
1)概述
文法 | WEBIMAGE(path) | 顯示網頁上的圖片。可以提升 Web 圖片載入速度。 |
---|---|---|
參數 | path | 圖片網頁 |
2)注意事項
不支援模擬計算,模擬計算詳情參見:2.4節。
WEBIMAGE函式傳回的圖片,展示效果受「儲存格屬性>樣式>自訂>對齊>圖片佈局」影響 。
PC端:
11.0.17 及之前版本,圖片預覽和匯出效果不受「圖片佈局」影響,預設為拉伸效果 。
11.0.18 及之後版本,圖片預覽和匯出效果與所選的「圖片佈局」一致,若為「預設」,則為平鋪效果 。
11.0.17 及之前版本升級至 11.0.18 及之後版本,原範本中的圖片顯示效果會變更為平鋪顯示效果 。
行動端:
11.0.19 及之前版本,圖片預覽和匯出效果不受「圖片佈局」影響,預設為拉伸效果 。
11.0.20 及之後版本,圖片預覽和匯出效果與所選的「圖片佈局」一致,若為「預設」,則為平鋪效果 。
11.0.19 及之前版本升級至 11.0.20 及之後版本,原範本中的圖片顯示效果會變更為平鋪顯示效果 。
3)示例
公式 | 結果 |
---|---|
WEBIMAGE('http://www.fanruan.com/images/index2.jpg') | 顯示圖片 |
14. UUID——傳回隨機數
1)概述
文法 | UUID() | 傳回隨機的 UUID。 |
---|---|---|
參數 | 空/32 | 傳回36位/32位隨機數 |
傳回值 | String | - |
2)範例
目前只支援兩種位數的隨機數,如下:
公式 | 結果 | 備註 |
---|---|---|
UUID() | 傳回36位隨機數,例如 ad342e21-fc60-4de3-8f20-126f6ac60a50 | - |
UUID(32) | 傳回32位隨機數,例如 4400a7ddeece4e568803a64634edd6e4 | - |
在設計器中新增公式如下圖所示:
得到結果預覽如下圖所示:
15. QUERY——解析 JSON 文本
FineReport10.0(2019-03-01)版本之後,提供了一個用於解析 JSON 文本的函式,有以下兩個作用:
用於提取內建參數 $fine_position 中的值
用於提取 JSON 格式的正文中的特定值,用於到報表中展示,避免使用報表中的正文函式進行各種切割。
該函式的第一個參數為待處理的字串,可以是一個 JSON 格式的字串,也可以是一個普通字串。
該函式的第二個參數是查詢語句,是一個標準的 JavaScript 語句,其中用 $ 表示第一個參數的值,可以參與運算。
15.1 用法一
用於提取內建參數 $fine_position 中的值
範例:
建立報表輸入公式:=QUERY($fine_position, "$ instanceof Array ? $.map(el => el.jobTitle) : $.jobTitle"),如下圖所示:
將範本掛出至平台,不同使用者登入平台後,範本將根據登入平台使用者的職位。
例如,技術支援部長 Alice 登入,顯示其職位,如下圖所示:
15.2 用法二
用於提取 JSON 格式的正文中的特定值,用於到報表中展示,避免使用報表中的正文函式進行各種切割。
函式呼叫 | 結果 |
---|---|
QUERY("{\"job\":\"司机\",\"age\":45}", "$.age") | 45 |
QUERY("{\"job\":\"司机\",\"age\":45}", "function() {return $.age > 50 ? 100 : 0}") | 0 |
QUERY("[\"a\",\"b\"]", "$") | ["a","b"] |
QUERY("[\"a\",\"b\"]", "$[1]") | "b" |
QUERY("{\"value\":20.5,\"status\":true}", "$.status") | true |
QUERY("{\"value\":20.5,\"status\":true}", "$.value") | 20.5 |
QUERY("hello", "$") | "hello" |
QUERY("hello", "$.slice(0, 3)") | "hel" |
QUERY("hello", "$ + \" world\"") | "hello world" |