1.基本概念
1.報(bào)表計(jì)算模型
在設(shè)計(jì)器中單元格之間存在依賴關(guān)系,對(duì)于任意一個(gè)單元格都可以設(shè)置它的左父格與上父格唱较。單元格父格是可選的天梧,默認(rèn)情況下戚丸,單元格的左父格就是其最近左邊與其位于同一行的單元格劫灶;上父格則是其最近上方與其位于同一列的的單元格裸违。如果一個(gè)單元格位于第一行,那默認(rèn)它就沒有上父格本昏,同樣供汛,如果位于第一列,默認(rèn)它就沒有左父格涌穆。打開報(bào)表設(shè)計(jì)器怔昨,選中任意單元格,都可以在其屬性面板看到它的默認(rèn)上父格或左父格宿稀,如下圖所示
2.行類型
在報(bào)表設(shè)計(jì)器中趁舀,選擇任意一行或單元格,點(diǎn)擊右鍵祝沸,就可以在彈出菜單中看類類型的定義矮烹,如下圖所示:
從右鍵菜單中可以看到,設(shè)計(jì)器支持將特定行定義成四種特殊類型罩锐,分別是:標(biāo)題行奉狈、重復(fù)表頭行、重復(fù)表尾行以及總結(jié)行涩惑,這些行類型主要是在分頁時(shí)起作用仁期。
1.標(biāo)題行
所謂標(biāo)題行,就是在報(bào)表計(jì)算后分頁時(shí)只會(huì)出現(xiàn)在第一頁第一行的行境氢,如果定義了多個(gè)行為標(biāo)題行類型蟀拷,那么這些行將在報(bào)表運(yùn)行后分頁輸出時(shí)第一頁最前面插入標(biāo)題行。需要注意的是萍聊,我們在報(bào)表中可以將位于任意位置的行定義成標(biāo)題行问芬,但報(bào)表計(jì)算分頁輸出時(shí),總會(huì)將這些定義為標(biāo)題行的行放在報(bào)表的第一頁最前端顯示寿桨。
2.重復(fù)表頭行
與標(biāo)題行不同的是此衅,定義為重復(fù)表頭行的行,在報(bào)表計(jì)算分頁輸出時(shí)會(huì)將定義成重復(fù)表頭行的行放在每一頁的前端進(jìn)行顯示亭螟。如果當(dāng)前報(bào)表中定義的有標(biāo)題行挡鞍,那么對(duì)于第一頁,標(biāo)題前將位于最上面预烙,其下才是重復(fù)表頭行定義的行
3.重復(fù)表尾行
與重復(fù)表頭行類型墨微,它也會(huì)在報(bào)表計(jì)算分頁輸出時(shí)放在每一頁中顯示,只是它會(huì)在每一頁的最下端顯示扁掸。
4.總結(jié)行
與標(biāo)題行對(duì)應(yīng)翘县,總結(jié)行會(huì)出現(xiàn)在報(bào)表計(jì)算后分頁輸出時(shí)最后一頁的最下端顯示最域。如果當(dāng)前報(bào)表中定義了重復(fù)表尾行,那么在報(bào)表計(jì)算后分頁輸出的最后一頁中總結(jié)后將位于重復(fù)表尾行下方顯示锈麸。
2.表達(dá)式
在報(bào)表使用過程當(dāng)中镀脂,不可避免的要使用函數(shù)及表達(dá)式實(shí)現(xiàn)一些數(shù)據(jù)的計(jì)算,在我們的報(bào)表當(dāng)中忘伞,很多地方都支持編寫表達(dá)式薄翅,比如最典型的我們可以將單元格類型改為“表達(dá)式”,這樣就可以在下面的表達(dá)式編輯器里輸入相應(yīng)的表達(dá)式與函數(shù)氓奈,除此之外翘魄,我們的報(bào)表還允許我們在條件毡代、圖片來源禁添、二維碼數(shù)據(jù)來源等地方使用表達(dá)式,所以學(xué)習(xí)并掌握UReport2中提供的表達(dá)式装获,是制作復(fù)雜報(bào)表的前提伪节。
1.基本語法
1.基本數(shù)據(jù)類型
類型 | 描述 | 示例 |
---|---|---|
數(shù)字 | 可以是一個(gè)整數(shù)光羞,也可以是一個(gè)小數(shù) | 1、123怀大、0.121331纱兑,這些都是合法的數(shù)字 |
字符串 | 字符串需要用單引號(hào)或雙引號(hào)包裹 | 'ureport2'、"UReport2"化借、‘UReport2教程’潜慎,這些都是合法的字符串 |
布爾值 | 布爾值表示是或否 | 布爾就兩個(gè):true和false |
2.操作符
操作符 | 描述 | 示例 |
---|---|---|
+ | 求兩個(gè)數(shù)的和,或者是連接兩個(gè)值 | 21+31蓖康,這就表示求這兩個(gè)數(shù)的和铐炫,結(jié)果就是52,“值:”+331則表示連接兩個(gè)值蒜焊,其結(jié)果就是“值:331” |
- | 求兩個(gè)數(shù)差 | 21 - 31倒信,這就表示求這兩個(gè)數(shù)的差,結(jié)果就是-10 |
* | 求兩個(gè)數(shù)的乘積 | 3*6泳梆,結(jié)果就是18 |
/ | 求兩個(gè)數(shù)除的結(jié)果 | 6/3鳖悠,結(jié)果就是2,如果除不盡优妙,則會(huì)保留8位小數(shù) |
% | 求兩個(gè)數(shù)除的余值 | 5%3乘综,結(jié)果是2;6%2結(jié)果是0 |
2.三元表達(dá)式
三元表達(dá)式示例 | 描述 |
---|---|
A1>1000 ? "正常值" : "低值" | 表達(dá)式計(jì)算時(shí)套硼,先取到A1單元格的值卡辰,判斷值是否大于1000,如果是返回“正常值”字符串,否則返回“低值”字符串 |
A1>1000 and A1<20000 ? "正常值" : "修正值:"+(A1+100) | 條件部分看政,判斷A1值是否大于1000且小于20000朴恳,如果是返回"正常值",否則返回字符串”修正值“與A1值加100后結(jié)果連接的值允蚣,如果A1是2000,那么就返回”修正值:2100“ |
3.if判斷
if判斷示例 | 描述 |
---|---|
if(A1>1000){return "正常值"} | 判斷A1單元格的值是不是大于1000呆贿,如果是返回”正常值“字符串嚷兔,否則什么都不做 |
f(A1>1000){"正常值"}else{"低值"} | 判斷A1單元格的值是不是大于1000,如果是返回”正常值“字符串做入,否則返回”低值“字符串冒晰。 |
if(A1>1000 and A1<20000){"正常值:"+A1}else if(A>20000 and A1<40000){"超高值"}else{"低值"} | 在這個(gè)例子當(dāng)中,條件部分添加了多個(gè)組合條件竟块,同時(shí)elseif多重判斷 |
4.單元格引用
在報(bào)表當(dāng)中壶运,大多數(shù)的計(jì)算都是針對(duì)單元格或與單元格有關(guān),因?yàn)閳?bào)表中單元格多數(shù)都與數(shù)據(jù)綁定浪秘,而數(shù)據(jù)往往又是多條蒋情,所以計(jì)算后的報(bào)表一個(gè)單元格會(huì)產(chǎn)生多個(gè),這樣對(duì)于單元格的引用就變的比較復(fù)雜耸携。在報(bào)表設(shè)計(jì)器中棵癣,引用的目標(biāo)單元格是相對(duì)當(dāng)前單元格來進(jìn)行計(jì)算的,引用方法就是直接在表達(dá)式里書寫單元格名稱夺衍,比如引用A1單元格狈谊,就直接寫A1即可,如下面的例子:
在上圖當(dāng)中沟沙,我們在D1單元格中輸入表達(dá)式A1河劝,這就表示,在D1單元格里填入相對(duì)當(dāng)前D1單元格的A1單元格的值矛紫,運(yùn)行后的效果如下:
可以看到赎瞎,因?yàn)镈1是A1的子格,A1單元格綁定的數(shù)據(jù)就是分組結(jié)構(gòu)含衔,根據(jù)當(dāng)前D1單元格的位置煎娇,就產(chǎn)生的上圖所示的結(jié)果。如果在D1單元格中輸入B1贪染,那么運(yùn)行后的效果又是下圖的樣子:
通過上面的例子我們可以看到缓呛,某個(gè)單元格的表達(dá)式引用目標(biāo)單元格,首先判斷的是目標(biāo)單元格與其所在單元格是否位于同一行或行杭隙,如果是則直接取對(duì)應(yīng)行或列上目標(biāo)單元格的值哟绊。如果當(dāng)前單元格與目標(biāo)單元格不在同一行或列,那情況又不一樣了痰憎,我們來看下一個(gè)例子票髓。
在上面的例子中攀涵,我們在C2單元格的表達(dá)式中輸入B1,表示取B1單元格的值洽沟,但B1單元格又和C2不在同一行或列上以故,同時(shí)B1單元格展開后會(huì)有多個(gè)值,但B1單元格和C2單元格都擁有一個(gè)共同的父格或間接父格A1(C2單元格的左父格是B2裆操,而B2單元格的左父格又是A1怒详,所以A1是C2單元格的間接左父格),所以它會(huì)取他們共同父格A1下所有B1的值踪区,運(yùn)行結(jié)果如下圖所示:
針對(duì)上面的例子昆烁,如果我們在上面的單元格中輸入C1,那結(jié)果又不一樣缎岗;因?yàn)镃1是C2的上父格静尼,所以將直接取與其位于同一列的上父格單元格的值,運(yùn)行效果如下圖所示:
再看下面的報(bào)表示例:
在上面的例子中传泊,B2單元格表達(dá)里輸入C1鼠渺,因?yàn)锽2和C2既不在同一行或列,也沒有共同的父格或渤,所以B2中將取到所有的C1單元格的值系冗,如下圖所示:
5.單元格坐標(biāo)
為了實(shí)現(xiàn)更為復(fù)雜的單元格引用,設(shè)計(jì)器引用了單元格坐標(biāo)的概念薪鹦。單元格坐標(biāo)掌敬,也是相對(duì)于當(dāng)前單元格來進(jìn)行計(jì)算的,同樣遵循上面的介紹的優(yōu)先取同行池磁、同列或共同父格的原則奔害,一個(gè)標(biāo)準(zhǔn)的單元格坐標(biāo)格式如下:
單元格坐標(biāo)格式:單元格名稱[Li:li,Li-1:li-1,…;Ti:ti,Ti-1:ti-1…]{條件...}
L表示左父格,l表示左父格展示后的序號(hào)地熄,序號(hào)為負(fù)值华临,表示向上位移;T表示上父格端考,t表示上父格展開后的序號(hào)雅潭,序號(hào)為負(fù)值,表示相對(duì)于當(dāng)前單元格向上位移却特,正值則表示向下位移扶供,如果只有左父格,那么直接寫L部分即可裂明;如果只是上父格椿浓,那么前面需要加上“;”號(hào),然后寫T部分,后面的大括號(hào)中是條件部分扳碍,多個(gè)條件之間用and/or連接提岔,表示對(duì)通過坐標(biāo)取到的單元格進(jìn)行條件過濾(如果取到多個(gè)單元格的話),條件部分是可選的笋敞,相關(guān)示例如下:
單元格坐標(biāo)示例 | 描述 |
---|---|
C1[A1:2,B1:1] | 在找C1時(shí)先找單元格A1展開后的第2格碱蒙;再找第二個(gè)A1下的B1單元格展開后的第一個(gè)單元格,然后再找這個(gè)B1單元格對(duì)應(yīng)的C1單元格 |
C2[A1:2,B1:2;C1:3] | 在找C2時(shí)夯巷,先找A1單元格展開后的第二格振亮,再找第二個(gè)A1單元格下B2單元格展開后的第二格,再根據(jù)第二個(gè)展開的B2單元格找其下名為C2單元格的左子格鞭莽;然后再找到C1單元格展開后的第三格,再看其下的C2單元格麸祷,取C2單元格的交集 |
C2[A1:2,B2:2]{C2>1000} | 表示取A2單元格展開后的第二格澎怒,再取其下B2單元格展開后第二格,再取B2下所有的C2單元格阶牍,最后再對(duì)取到的C2單元格進(jìn)行條件過濾喷面,只取出C2單元格值大于1000的所有C2單元格。 |
C2[A1:2,B2:2]{C2>1000 and C2<10000} | 表示取A2單元格展開后的第二格走孽,再取其下B2單元格展開后第二格惧辈,再取B2下所有的C2單元格,最后再對(duì)取到的C2單元格進(jìn)行條件過濾磕瓷,只取出C2單元格值大于1000且小于10000的所有C2單元格的值盒齿。 |
我們來看一個(gè)具體的示例,報(bào)表模版如下:
在上面的報(bào)表模版中困食,在B2單元格表達(dá)式里边翁,我們輸入了C1[A1:2,B1:1],這就表示取A1單元格展開后第二格下B1單元格展開后第一格下對(duì)應(yīng)的C1單元格的值硕盹,所以運(yùn)行后我們可以看到如下圖所示效果:
3.函數(shù)
1.常用函數(shù)
1.count函數(shù)(統(tǒng)計(jì)數(shù)量)
count函數(shù)是對(duì)給定的表達(dá)式在計(jì)算后對(duì)象數(shù)量進(jìn)行統(tǒng)計(jì)符匾。
示例 | 說明 |
---|---|
count(C1) | 統(tǒng)計(jì)相對(duì)當(dāng)前所在單元格,目標(biāo)C1單元格數(shù)量 |
count(C1{age>20}) | 統(tǒng)計(jì)相對(duì)當(dāng)前所在單元格瘩例,目標(biāo)C1單元格綁定對(duì)象的age屬性大于20的C1單元格數(shù)量 |
count(C1,C2) | 統(tǒng)計(jì)相對(duì)當(dāng)前所在單元格啊胶,目標(biāo)C1單元格以及C2單元格加在一起的數(shù)量 |
count(C1{age>20},C2{salary>2000 and degree=='本科'}) | 統(tǒng)計(jì)相對(duì)當(dāng)前所在單元格,目標(biāo)C1單元格綁定對(duì)象的age屬性大于20的C1單元格以及C2單元格綁定對(duì)象的salary屬性大于2000同時(shí)degree屬性等于本科的單元格數(shù)量 |
2.sum函數(shù)(累加)
sum函數(shù)是對(duì)給定的表達(dá)式在計(jì)算后值進(jìn)行累加垛贤,sum函數(shù)要求各個(gè)表達(dá)式計(jì)算后的值必須是數(shù)字焰坪,否則將產(chǎn)生錯(cuò)誤。
示例 | 說明 |
---|---|
sum(C1) | 相對(duì)當(dāng)前單元格南吮,取到所有C1單元格值進(jìn)行累加 |
sum(C1,C2) | 相對(duì)當(dāng)前單元格琳彩,取到所有C1和C2單元格的值進(jìn)行累加 |
sum(C1{age>20}) | 相對(duì)當(dāng)前單元格,取到所有綁定對(duì)象屬性age大于20的C1單元格值進(jìn)行累加 |
sum(C1{age>20},C2{salary>2000 and degree=='本科'}) | 相對(duì)當(dāng)前單元格,取到所有綁定對(duì)象屬性age大于20的C1單元格值以及綁定對(duì)象屬性salary大于2000且degree屬性等于本科的C2單元格的值進(jìn)行累加 |
3.avg函數(shù)(求平均值)
avg函數(shù)是對(duì)給定的表達(dá)式在計(jì)算后值求平均值露乏,avg函數(shù)要求各個(gè)表達(dá)式計(jì)算后的值必須是數(shù)字碧浊,否則將產(chǎn)生錯(cuò)誤。
示例 | 說明 |
---|---|
avg(C1) | 相對(duì)當(dāng)前單元格瘟仿,求C1單元格的平均值 |
avg(C1{age>20}) | 相對(duì)當(dāng)前單元格箱锐,取到綁定對(duì)象屬性age大于20的C1單元格值的平均值 |
avg(C1,C2) | 相對(duì)當(dāng)前單元格,求C1和C2單元格的平均值 |
avg(C1{age>20},C2{salary>2000 and degree=='本科'}) | 相對(duì)當(dāng)前單元格劳较,取到所有綁定對(duì)象屬性age大于20的C1單元格值以及綁定對(duì)象屬性salary大于2000且degree屬性等于本科的C2單元格的值進(jìn)行求平均值 |
4.max函數(shù)(求最大值)
max函數(shù)是對(duì)給定的表達(dá)式在計(jì)算后值求其中的最大值驹止,max函數(shù)要求各個(gè)表達(dá)式計(jì)算后的值必須是數(shù)字,否則將產(chǎn)生錯(cuò)誤观蜗。
示例 | 說明 |
---|---|
max(C1) | 相對(duì)當(dāng)前單元格臊恋,求C1單元格的最大值 |
max(C1{age>20}) | 相對(duì)當(dāng)前單元格,取到綁定對(duì)象屬性age大于20的C1單元格值的最大值 |
max(C1,C2) | 相對(duì)當(dāng)前單元格墓捻,求C1和C2單元格的最大值 |
max(C1{age>20},C2{salary>2000 and degree=='本科'}) | 相對(duì)當(dāng)前單元格抖仅,取到所有綁定對(duì)象屬性age大于20的C1單元格值以及綁定對(duì)象屬性salary大于2000且degree屬性等于本科的C2單元格的值進(jìn)行求最大值 |
5.min函數(shù)(求最小值)
min函數(shù)是對(duì)給定的表達(dá)式在計(jì)算后值求其中的最小值,min函數(shù)要求各個(gè)表達(dá)式計(jì)算后的值必須是數(shù)字砖第,否則將產(chǎn)生錯(cuò)誤撤卢。
示例 | 說明 |
---|---|
min(C1) | 相對(duì)當(dāng)前單元格,求C1單元格的最小值 |
min(C1{age>20}) | 相對(duì)當(dāng)前單元格梧兼,取到綁定對(duì)象屬性age大于20的C1單元格值的最小值 |
min(C1,C2) | 相對(duì)當(dāng)前單元格放吩,求C1和C2單元格的最小值 |
min(C1{age>20},C2{salary>2000 and degree=='本科'}) | 相對(duì)當(dāng)前單元格,取到所有綁定對(duì)象屬性age大于20的C1單元格值以及綁定對(duì)象屬性salary大于2000且degree屬性等于本科的C2單元格的值進(jìn)行求最小值 |
6.row函數(shù)(取行號(hào))####
取當(dāng)前單元格所在行的行號(hào)羽杰,這個(gè)函數(shù)比較簡單渡紫,它沒有參數(shù)。
示例 | 說明 |
---|---|
row() | 取當(dāng)前單元格所在行的行號(hào) |
7.column函數(shù)(取列號(hào))####
取當(dāng)前單元格所在列的列號(hào)忽洛,這個(gè)函數(shù)比較簡單腻惠,它沒有參數(shù)。
示例 | 說明 |
---|---|
column() | 取當(dāng)前單元格所在列的列號(hào) |
2.分頁相關(guān)函數(shù)
所謂分頁相關(guān)函數(shù)欲虚,是指這些函數(shù)是在分頁的時(shí)候進(jìn)行計(jì)算集灌,比如計(jì)算當(dāng)前頁有多少條記錄、當(dāng)前頁某個(gè)單元格值累加后是多少复哆、平均值是多少欣喧、最大值是多少等等。
1.pcount函數(shù)
統(tǒng)計(jì)當(dāng)前頁下表達(dá)對(duì)應(yīng)值的數(shù)目梯找,與count函數(shù)的使用方法基本一致唆阿,不同之處在于pcount只會(huì)統(tǒng)計(jì)當(dāng)前頁中對(duì)應(yīng)的表達(dá)式內(nèi)容的數(shù)目。
示例 | 說明 |
---|---|
pcount(C1) | 統(tǒng)計(jì)當(dāng)前頁中锈锤,C1單元格數(shù)目 |
pcount(C1,D2{D2>10000}) | 統(tǒng)計(jì)當(dāng)前頁中驯鳖,C1單元格和當(dāng)前頁中所有D2單元格值大于10000的D2單元格數(shù)目 |
2.psum函數(shù)
將當(dāng)前頁下表達(dá)式對(duì)應(yīng)的所有值進(jìn)行累加闲询,與sum函數(shù)對(duì)應(yīng),不同的是psum只針對(duì)當(dāng)前頁浅辙。
示例 | 說明 |
---|---|
psum(C1) | 將當(dāng)前頁中扭弧,所有C1單元格值進(jìn)行累加 |
psum(C1,D2{D2>10000}) | 將當(dāng)前頁中,所有C1單元格值以及值小于10000的D2單元格值累加起來 |
3.pmax函數(shù)
比較當(dāng)前頁中记舆,表達(dá)式對(duì)應(yīng)的值鸽捻,找出其中最大的那個(gè)值,與max函數(shù)對(duì)應(yīng)泽腮,只是pmax只針對(duì)當(dāng)前頁御蒲。
示例 | 說明 |
---|---|
pmax(C1) | 比較當(dāng)前頁中所有C1單元格值,找出最大值诊赊。 |
pmax(C1,D2{D2>10000}) | 比較當(dāng)前頁中厚满,所有C1、D2以及值大于1000的E2單元格值碧磅,找出其中最大的痰滋。 |
4.pmin函數(shù)
比較當(dāng)前頁中,表達(dá)式對(duì)應(yīng)的值续崖,找出其中最小的那個(gè)值,與min函數(shù)對(duì)應(yīng)团搞,只是pmin只針對(duì)當(dāng)前頁严望。
示例 | 說明 |
---|---|
pmin(C1) | 比較當(dāng)前頁中所有C1單元格值,找出最小值逻恐。 |
pmin(C1,D2,E2{E2>1000}) | 比較當(dāng)前頁中像吻,所有C1、D2以及值大于1000的E2單元格值复隆,找出其中最小的拨匆。 |
5.page函數(shù)
輸出當(dāng)前所在頁的頁碼,該函數(shù)沒有參數(shù)挽拂。
示例 | 說明 |
---|---|
page() | 輸出當(dāng)前所在頁的頁碼惭每。 |
6.pages函數(shù)
輸出當(dāng)前報(bào)表一共有多少頁,該函數(shù)沒有參數(shù)亏栈。(pages函數(shù)目前僅能在頁眉頁腳中使用)
示例 | 說明 |
---|---|
pages() | 輸出當(dāng)前報(bào)表一共有多少頁台腥。 |
3.數(shù)學(xué)函數(shù)
1.abs函數(shù)(絕對(duì)值)
求參數(shù)的絕對(duì)值,參數(shù)值計(jì)算后數(shù)據(jù)類型必須是數(shù)字绒北,否則會(huì)報(bào)錯(cuò)黎侈。
示例 | 說明 |
---|---|
abs(-233) | 求-233絕對(duì)值,計(jì)算后的值是233 |
abs(C1) | 相對(duì)當(dāng)前單元格闷游,取到C1單元格的值峻汉,如果有多個(gè)則取第一個(gè)值返回其絕對(duì)值 |
2.ceil函數(shù)(最小值)
對(duì)參數(shù)值取最小值贴汪,如果參數(shù)值為小數(shù)將舍棄小數(shù)點(diǎn)后面的小數(shù)部分,參數(shù)值計(jì)算后數(shù)據(jù)類型必須是數(shù)字休吠,否則會(huì)報(bào)錯(cuò)扳埂。
示例 | 說明 |
---|---|
ceil(32.32) | 計(jì)算后值為32 |
ceil(C1) | 相對(duì)當(dāng)前單元格,取到C1單元格的值蛛碌,如果有多個(gè)則取第一個(gè)值返回其最小值 |
3.floor函數(shù)(最大值)
對(duì)參數(shù)值取最大值聂喇,如果參數(shù)值為小數(shù)將四舍五入小數(shù)點(diǎn)后面的小數(shù)部分,參數(shù)值計(jì)算后數(shù)據(jù)類型必須是數(shù)字蔚携,否則會(huì)報(bào)錯(cuò)希太。
示例 | 說明 |
---|---|
floor(32.52) | 計(jì)算后值為33 |
floor(C1) | 相對(duì)當(dāng)前單元格,取到C1單元格的值酝蜒,如果有多個(gè)則取第一個(gè)值返回其最大值 |
4.chn函數(shù)(數(shù)字轉(zhuǎn)中文)
將一個(gè)數(shù)字轉(zhuǎn)化成中文誊辉,參數(shù)值計(jì)算后數(shù)據(jù)類型必須是數(shù)字,否則會(huì)報(bào)錯(cuò)亡脑。
示例 | 說明 |
---|---|
chn(213) | 計(jì)算后的值為:貳佰壹拾叁 |
chn(C1) | 相對(duì)當(dāng)前單元格堕澄,取到C1單元格的值,如果有多個(gè)則取第一個(gè)值霉咨,再轉(zhuǎn)化成中文 |
5.cos函數(shù)(求余弦)
求參數(shù)的余弦值蛙紫,參數(shù)值計(jì)算后數(shù)據(jù)類型必須是數(shù)字,否則會(huì)報(bào)錯(cuò)途戒。
示例 | 說明 |
---|---|
cos(213) | 計(jì)算后的值為:0.8090276252864301 |
cos(C1) | 相對(duì)當(dāng)前單元格坑傅,取到C1單元格的值,如果有多個(gè)則取第一個(gè)值喷斋,再求其余弦值 |
6.sin函數(shù)(正弦)
求參數(shù)的正弦值唁毒,參數(shù)值計(jì)算后數(shù)據(jù)類型必須是數(shù)字,否則會(huì)報(bào)錯(cuò)星爪。使用方法同cos()
7.tan函數(shù)(正切)
求參數(shù)的正切值浆西,參數(shù)值計(jì)算后數(shù)據(jù)類型必須是數(shù)字,否則會(huì)報(bào)錯(cuò)顽腾。使用方法同cos()
8.exp函數(shù)(方法用于返回自然數(shù)底數(shù)e的參數(shù)次方)
求參數(shù)的自然數(shù)底數(shù)e的參數(shù)次方近零,參數(shù)值計(jì)算后數(shù)據(jù)類型必須是數(shù)字,否則會(huì)報(bào)錯(cuò)抄肖。使用方法同cos()
9.log10函數(shù)(返回以10為底的對(duì)數(shù)值)
求參數(shù)以10為底的對(duì)數(shù)值秒赤,參數(shù)值計(jì)算后數(shù)據(jù)類型必須是數(shù)字,否則會(huì)報(bào)錯(cuò)憎瘸。使用方法同cos()
10.log函數(shù)(自然對(duì)數(shù))
求參數(shù)自然對(duì)數(shù)值入篮,參數(shù)值計(jì)算后數(shù)據(jù)類型必須是數(shù)字,否則會(huì)報(bào)錯(cuò)幌甘。使用方法同cos()
11.median函數(shù)(中位數(shù))
求一組數(shù)據(jù)的中位數(shù)潮售,參數(shù)值計(jì)算后數(shù)據(jù)類型必須是數(shù)字痊项,否則會(huì)報(bào)錯(cuò)。
示例 | 說明 |
---|---|
median(12,42,31) | 運(yùn)行結(jié)果為31 |
median(C1) | 相對(duì)當(dāng)前單元格酥诽,取到C1單元格的所有值鞍泉,再取這些值中位數(shù) |
median(C1,C2) | 相對(duì)當(dāng)前單元格,取到C1單元格和C2單元格的所有值肮帐,再取這些值中位數(shù) |
12.mode函數(shù)(眾數(shù))
求一組數(shù)據(jù)的眾數(shù)咖驮,參數(shù)值計(jì)算后數(shù)據(jù)類型必須是數(shù)字,否則會(huì)報(bào)錯(cuò)训枢。
示例 | 說明 |
---|---|
mode(12,42,3,12) | 運(yùn)行結(jié)果為12 |
mode(C1) | 相對(duì)當(dāng)前單元格托修,取到C1單元格的所有值,再取這些值眾數(shù) |
mode(C1,C2) | 相對(duì)當(dāng)前單元格恒界,取到C1單元格和C2單元格的所有值睦刃,再取這些值眾數(shù) |
13.vara函數(shù)(方差)
求一組數(shù)據(jù)的方差,參數(shù)值計(jì)算后數(shù)據(jù)類型必須是數(shù)字十酣,否則會(huì)報(bào)錯(cuò)涩拙。使用方法同median()
14.stdevp函數(shù)(標(biāo)準(zhǔn)差)
求一組數(shù)據(jù)的標(biāo)準(zhǔn)差,參數(shù)值計(jì)算后數(shù)據(jù)類型必須是數(shù)字耸采,否則會(huì)報(bào)錯(cuò)兴泥。使用方法同median()
15.pow函數(shù)(返回第一個(gè)參數(shù)的第二個(gè)參數(shù)次方)
pow函數(shù)需要兩個(gè)參數(shù),第一個(gè)為需要計(jì)算的數(shù)字或表達(dá)式虾宇,第二個(gè)為具體的次方郁轻。
示例 | 說明 |
---|---|
pow(3,2) | 表示計(jì)算3的2次方值,運(yùn)算后的結(jié)果為9 |
pow(C1,3) | 相對(duì)當(dāng)前單元格文留,取到C1單元格的值,如果取到的C1單元格有多個(gè)竭沫,則取第一個(gè)燥翅,再對(duì)其值求3次方 |
16.random函數(shù)(隨機(jī)數(shù))
生成一個(gè)隨機(jī)數(shù),可以有一個(gè)數(shù)字類型的參數(shù)或表達(dá)式蜕提,如果有參數(shù)森书,那么以這個(gè)參數(shù)作為生成隨機(jī)數(shù)字的種子,如果沒有則生成一個(gè)0~1之間的隨機(jī)數(shù)谎势。
示例 | 說明 |
---|---|
random() | 生成一個(gè)0~1之間的隨機(jī)數(shù) |
random(10) | 生成一個(gè)1~10之間的隨機(jī)數(shù) |
random(C1) | 相對(duì)當(dāng)前單元格凛膏,取到C1單元格的值,如果取到的C1單元格有多個(gè)脏榆,則取第一個(gè)猖毫,再將這個(gè)值作為種子生成一個(gè)隨機(jī)數(shù) |
17.round函數(shù)(四舍五入)
對(duì)一個(gè)小數(shù)進(jìn)行四舍五入,它需要兩個(gè)參數(shù)须喂,第一個(gè)參數(shù)要進(jìn)行四舍五入的小數(shù)或表達(dá)式吁断,第二個(gè)為一個(gè)可選的要保留的小數(shù)位數(shù)趁蕊,如果沒有,則不保留小數(shù)仔役。
示例 | 說明 |
---|---|
round(32.12) | 計(jì)算后的值為32 |
round(32.123,2) | 計(jì)算后的值為32.12 |
round(C1,2) | 相對(duì)當(dāng)前單元格掷伙,取到C1單元格的值,如果取到的C1單元格有多個(gè)又兵,則取第一個(gè)任柜,然后對(duì)這個(gè)值做保留兩位小數(shù)的四舍五入操作 |
18.sqrt函數(shù)(平方根)
求一個(gè)數(shù)字或表達(dá)式計(jì)算后值的平方根,參數(shù)值計(jì)算后數(shù)據(jù)類型必須是數(shù)字沛厨,否則會(huì)報(bào)錯(cuò)宙地。
示例 | 說明 |
---|---|
sqrt(2) | 計(jì)算后的值為:1.414214 |
sqrt(C1) | 相對(duì)當(dāng)前單元格,取到C1單元格的值俄烁,如果取到的C1單元格有多個(gè)绸栅,則取第一個(gè),然后對(duì)這個(gè)值進(jìn)行取平方根計(jì)算 |
4.日期函數(shù)
1.date函數(shù)(日期)
輸出日期页屠,date函數(shù)可以有一個(gè)參數(shù)粹胯,就是日期格式,如果沒有則采用yyyy-MM-dd HH:mm:ss格式輸出日期辰企。
示例 | 說明 |
---|---|
date() | 以yyyy-MM-dd HH:mm:ss格式輸出當(dāng)前日期风纠,如:2010-08-15 08:45:10 |
date('yyyy年MM月dd日') | 以yyyy年MM月dd日格式輸出當(dāng)前日期,如:2010年08月15日 |
2.day函數(shù)(天)
輸出當(dāng)前在月份中的天牢贸,該函數(shù)沒有參數(shù)竹观。
示例 | 說明 |
---|---|
day() | 可能輸出15,表示當(dāng)前為15日 |
3.month函數(shù)(月)
輸出當(dāng)前月份潜索,該函數(shù)沒有參數(shù)臭增。用法同day()
4.year函數(shù)(年)
輸出當(dāng)前年份,該函數(shù)沒有參數(shù)竹习。用法同day()
5.week函數(shù)(星期)
輸出當(dāng)前是星期幾誊抛,該函數(shù)沒有參數(shù)。
示例 | 說明 |
---|---|
week() | 輸出值可能是“星期三”整陌,表示當(dāng)前為星期三 |
5.字符串函數(shù)
1.indexOf函數(shù)(位置)
用于返回一個(gè)字符串拗窃,在目標(biāo)字符串中的位置,該函數(shù)至少需要兩個(gè)參數(shù)泌辫,第一個(gè)為目標(biāo)字符串随夸,第二個(gè)為要查找的字符串,如果有三個(gè)參數(shù)震放,那么第三個(gè)就是開始查找的位置信息宾毒,第三個(gè)參數(shù)必須是一定大于等于0的數(shù)字。
示例 | 說明 |
---|---|
indexof('中華人民共和國','共和') | 表示要從"中華人民共和國"這個(gè)字符串中找到“共和”字符串的位置 |
indexof('中華人民共和國','共和',2) | 表示要從"中華人民共和國"這個(gè)字符串中第二個(gè)字符開始始殿遂,找到“共和”字符串的位置 |
indexof(C1,"人民",2) | 相對(duì)于當(dāng)前單元格伍俘,找到C1單元格邪锌,如果C1單元格有多個(gè),則取第一個(gè)單元格值癌瘾,再從這個(gè)值中第2個(gè)位置開始找到“人民”字符串的位置 |
2.length函數(shù)(長度)
求目標(biāo)字符串長度觅丰,該函數(shù)必須要有一個(gè)參數(shù)。
示例 | 說明 |
---|---|
length("中華人民共和國") | 7 |
length(C1) | 相對(duì)于當(dāng)前單元格妨退,找到C1單元格妇萄,如果C1單元格有多個(gè),則取第一個(gè)單元格值咬荷,然后計(jì)算這個(gè)值長度 |
3.lower函數(shù)(轉(zhuǎn)小寫)
將參數(shù)中英文全部轉(zhuǎn)為小寫冠句,該函數(shù)必須要有一個(gè)參數(shù)。
示例 | 說明 |
---|---|
lower("Super Man") | 計(jì)算后的結(jié)果為:super man |
lower(C1) | 相對(duì)于當(dāng)前單元格幸乒,找到C1單元格懦底,如果C1單元格有多個(gè),則取第一個(gè)單元格值罕扎,然后將這個(gè)值中所有英文轉(zhuǎn)換成小寫 |
4.upper函數(shù)(轉(zhuǎn)大寫)
將參數(shù)中英文全部轉(zhuǎn)為大寫聚唐,該函數(shù)必須要有一個(gè)參數(shù)。用法同lower()
5.replace函數(shù)(替換字符串)
這個(gè)函數(shù)需要有三個(gè)參數(shù)腔召,第一個(gè)是目標(biāo)字符串杆查,第二個(gè)是要被替換的字符串,第三個(gè)是要替換的字符串臀蛛。
示例 | 說明 |
---|---|
replace("他是一個(gè)好人","他","她") | 計(jì)算結(jié)果為:她是一個(gè)好人 |
replace(C1,"他","她") | 相對(duì)于當(dāng)前單元格亲桦,找到C1單元格,如果C1單元格有多個(gè)浊仆,則取第一個(gè)單元格值客峭,然后再將這個(gè)值中所有“他”換成“她” |
6.substring函數(shù)(子字符串)
該函數(shù)允許有三個(gè)參數(shù),第一個(gè)是原字符串抡柿,第二個(gè)為開始截取的位置舔琅,第三個(gè)為截取結(jié)束的位置,第三個(gè)缺省即為字符串尾部沙绝。
示例 | 說明 |
---|---|
substring("他是一個(gè)好人",2) | 運(yùn)行結(jié)果為:一個(gè)好人 |
substring("他是一個(gè)好人",2,4) | 運(yùn)行結(jié)果為:一個(gè) |
substring(C1,2,10) | 相對(duì)于當(dāng)前單元格,找到C1單元格鼠锈,如果C1單元格有多個(gè)闪檬,則取第一個(gè)單元格值,然后再取這個(gè)值中第2到第10個(gè)字符之間內(nèi)容 |
7.trim函數(shù)(去空格)
去除目標(biāo)字符串兩邊空格购笆,該函數(shù)要求必須要有一個(gè)參數(shù)粗悯。
示例 | 說明 |
---|---|
trim(" 一個(gè)好人 ") | 運(yùn)行結(jié)果為:一個(gè)好人 |
trim(C1) | 相對(duì)于當(dāng)前單元格,找到C1單元格同欠,如果C1單元格有多個(gè)样傍,則取第一個(gè)單元格值横缔,然后再將這個(gè)值兩邊可能存在的空格全部去除 |
3.數(shù)據(jù)引用
1.配置數(shù)據(jù)源
新建數(shù)據(jù)源
填寫數(shù)據(jù)源信息,數(shù)據(jù)源名稱自己定義衫哥,Bean ID填寫配好的Bean茎刚。
填寫數(shù)據(jù)集信息,數(shù)據(jù)集名稱自己定義撤逢,方法名選擇及返回對(duì)象對(duì)應(yīng)填寫膛锭。
刷新字段
2.設(shè)置數(shù)據(jù)集單元格
選中單元格,單元格屬性設(shè)置中類型為“數(shù)據(jù)集”蚊荣,選擇對(duì)應(yīng)的數(shù)據(jù)源及屬性
3.表達(dá)式引用單元格
選中單元格初狰,單元格屬性設(shè)置中類型為表達(dá)式,表達(dá)式一欄填寫表達(dá)式
語法規(guī)則如下:數(shù)據(jù)集名稱.聚合方式(字段名[,條件,排序方式])互例,具體聚合類型有以下幾種:
1.select(羅列數(shù)據(jù))
示例 | 說明 |
---|---|
ds1.select(username) | 取數(shù)據(jù)集ds1中所有的username字段信息 |
ds1.select(username,age>18) | 取數(shù)據(jù)集ds1中所有的age屬性大于18的username字段信息 |
ds1.select(username,age>18, desc) | 取數(shù)據(jù)集ds1中所有的age屬性大于18的username字段信息奢入,同時(shí)對(duì)username字段做倒排序 |
ds1.select(username,age>18 and age<60, asc) | 取數(shù)據(jù)集ds1中所有的age屬性大于18且小于60的username字段信息,同時(shí)對(duì)username字段做正排序 |
2.group(分組羅列數(shù)據(jù))
示例 | 說明 |
---|---|
ds1.group(degree) | 對(duì)數(shù)據(jù)集ds1中degree字段進(jìn)行分組 |
ds1.group(degree,age>18) | 對(duì)數(shù)據(jù)集ds1中age屬性大于18的所有的degree字段進(jìn)行分組 |
ds1.group(degree,age>18, asc) | 對(duì)數(shù)據(jù)集ds1中age屬性大于18的所有的degree字段進(jìn)行分組媳叨,同時(shí)對(duì)分組后的degree字段進(jìn)行正排序 |
3.sum(累加數(shù)據(jù))
sum是對(duì)數(shù)據(jù)集目標(biāo)字段進(jìn)行累加腥光,所以目標(biāo)字段一定要是一個(gè)數(shù)字類型,否則就會(huì)產(chǎn)生錯(cuò)誤
示例 | 說明 |
---|---|
ds1.sum(salary) | 對(duì)于數(shù)據(jù)集ds1中的salary字段進(jìn)行累加 |
ds1.sum(salary, age>30) | 對(duì)數(shù)據(jù)集ds1中age屬性大于30的所有對(duì)象的salary字段進(jìn)行累加 |
4.count(統(tǒng)計(jì)數(shù)量)
count是對(duì)數(shù)據(jù)集對(duì)象數(shù)量進(jìn)行統(tǒng)計(jì),統(tǒng)計(jì)數(shù)量不需要指定propertyName及order
示例 | 說明 |
---|---|
ds1.count() | 對(duì)ds1數(shù)據(jù)集中對(duì)象數(shù)量進(jìn)行統(tǒng)計(jì) |
ds1.count(age>30) | 統(tǒng)計(jì)數(shù)據(jù)集ds1中對(duì)象屬性age值大30的所有對(duì)象的數(shù)量 |
5.max(取最大值)
max是對(duì)數(shù)據(jù)集對(duì)象中某一字段進(jìn)行比較肩杈,取最大值柴我,取最大值沒有order。
示例 | 說明 |
---|---|
ds1.max(salary) | 對(duì)于數(shù)據(jù)集ds1中的salary字段進(jìn)行比較扩然,取最大值 |
ds1.max(salary, age>30) | 對(duì)數(shù)據(jù)集ds1中age屬性大于30的所有對(duì)象的salary字段進(jìn)行比較艘儒,取最大值 |
6.min(取最小值)
min是對(duì)數(shù)據(jù)集對(duì)象中某一字段進(jìn)行比較,取最小值夫偶,取最小值沒有order界睁。用法同max()
7.avg(取平均值)
avg是對(duì)數(shù)據(jù)集對(duì)象中某一字段進(jìn)行比較,取平均值兵拢,除不盡默認(rèn)保留8位小數(shù)翻斟,取平均值沒有order。用法同max()