本部分介绍了报表中常用单元格函数的函数说明、语法、参数说明、返回值、选项以及示例。
函数说明:
对可扩展单元格或集合表达式求平均值
语法:
avg(exp)
avg(cellExp,exp)
参数说明:
exp |
需要求平均值的单元格或表达式,一般为可扩展单元格或集合表达式 |
cellExp |
单元格或单元格集合,以cellExp里的单元格为当前格计算表达式exp |
返回值:
实数
选项:
@a |
对null元素也进行计数 |
示例:
例1:avg([A1:B10]) 求得A1至B10之间单元格的平均值,注意是以当前格为基格计算A1和B10
例2:avg(arg1) 其中arg1是整数组,表示求得arg1中所有数据的平均值
例3:avg(B1{}) 表示求得当前主格扩展区域内所有扩展后的B1单元格的平均值
例4:avg(B1[`0]{}) 表示求得根坐标下所有扩展后的B1单元格的平均值
例5:avg@a(list(2,4,null))返回2,如果省略@a则返回3
例6:avg(A1[`0]{},B1+C1) 计算分别与每个A1相对应的B1、C1的和的平均值
函数说明:
根据表达式的不同计算结果,返回不同的值。本函数:从左到右计算,先出现的表达式先算,如果出现满足的表达式,则返回相应的结果,后面的不再计算。如果没有一个表达式满足条件,而且有缺省值表达式,则返回缺省值,否则返回null。
语法:
case(Exp{,valueExp1:resultExp1{,valueExp2:resultExp2{,...{;defaultExp}}}})
参数说明:
Exp |
判断用到的表达式 |
valueExp(n) |
值表达式 |
resultExp(n) |
返回结果表达式 |
defaultExp |
缺省值表达式,如果所有表达式结果都不满足,则返回本表达式计算结果 |
示例:
例1:case(4,1:"Dept 1",2:"Dept 2",3:"Dept 3";"Admin Dept")
运算结果为:" Admin Dept "
例2:case(4,1:"Dept 1",2:"Dept 2",3:"Dept 3")
运算结果为:null
例3:case(3,1:"Dept 1",2:"Dept 2",3:"Dept 3";"Admin Dept")
运算结果为:"Dept 3"
函数说明:
在平面内取单元格,注意这里的单元格是运算后的单元格
语法:
cell({cellExp}{,rowOffsetExp{,colOffsetExp}})
参数说明:
cellExp |
单元格表达式(不写表示当前单元格) |
rowOffsetExp |
整数的相对cellExp的行偏移量表达式 |
colOffsetExp |
整数的相对cellExp的列偏移量表达式 |
示例:
例1:cell(,1,-5) 取得当前单元格的下一行,左边5列的单元格
例2:cell(C1) 取得与当前单元格的偏移为“当前单元格的源格与C1的偏移”的单元格
例3:cell(D1,1,3) 取得D1的下一行,右边3列的单元格
函数说明:
取得当前单元格所在列的列号
语法:
col({cellExp})
参数说明:
cellExp |
单元格表达式(不写表示当前单元格) |
返回值:
整数
示例:
在B列单元格中写入=col(),返回值为2,如果B列存在横向扩展格,则列号依次改变。
函数说明:
对可扩展单元格或集合表达式进行计数
语法:
count(expression)
参数说明:
expression |
需要被计数的单元格或表达式,一般为可扩展单元格或集合表达式 |
返回值:
整数
选项:
@a |
对null元素也进行计数 |
@d |
对去除重复内容后的数据进行计数 |
示例:
例1:count([A1:B10]) 以当前格为基格计算A1和B10之间总共有几个单元格,如果单元格的值为空则不进行计数
例2:count([A1[1]:B10[3]])计算A1扩展出来的第一个格和B10扩展出来的第三个格之间总共有几个单元格,如果单元格的值为空则不进行计数
例3:count(arg1) 其中arg1是参数组,统计arg1中有几个数据
例4:count(B1{}) 表示求得当前主格扩展区域内所有扩展后的B1单元格的个数
例5:count(B1[`0]{}) 表示求得根坐标下所有扩展后的B1单元格的个数
例6:count@a(list(3,4,null))返回3,如果省略@a则返回2
例7:count@d(list(3,4,3))返回2,如果省略@d则返回3
函数说明:
取单元格的显示值
语法:
disp(cell)
参数说明:
cell |
单元格 |
返回值:
字符型
示例:
例1:if(like(disp(A1), "中国*"),true,false)
表示如果A1单元格的显示值含有中国的字样,返回true,否则返回false。
函数说明:
按名称取得数据集对象,本函数用于动态改变表达式的数据集对象,用法很灵活,但是性能较低,须慎用。
语法:
ds( stringExp )
参数说明:
stringExp |
数据集的名称 |
返回值:
数据集对象
说明:
本函数的返回值是表达式的一个元素,不能作为单元格的数据值,必须经过二次运算。
示例:
例1:ds("ds1").select(#0) 表示取出ds1数据集中的记录行号集合
函数说明:
动态解析并计算表达式
语法:
eval( StringExp )
eval( StringExp, SubRptExp )
eval( StringExp, DataSetExp )
参数说明:
StringExp |
待计算的表达式串 |
SubRptExp |
嵌入式子报表对象,一般是含有子报表的单元格 |
DataSetExp |
数据集对象,一般是ds函数 |
返回值:
表达式的结果值,数据类型由表达式决定
示例:
例1:eval( "1+5" )
返回6
例2:eval("B2+10", A1)
其中A1为嵌入式子报表,表示计算A1子报表中的B2+10
例3:eval("salary+100", ds("ds1"))
表示计算数据集ds1中salary加100
函数说明:
将文件内容读取成字符串或byte[]
语法:
fread(fileName[, charset])
参数说明:
fileName |
文件名 |
charset |
编码格式 |
返回值:
字符串或byte[]
选项:
@b |
将文件读成byte[] |
示例:
例1:fread@b("C:/R50.png") 将文件内容读取成byte[]返回
例2:fread("D:/report.xml") 将文件内容读取成字符串返回
例3:fread("D:/c.txt","UTF-8") 指定编码格式为"UTF-8"
函数说明:
计算生成统计图
语法:
graph({graphTypeExp})
参数说明:
graphTypeExp |
统计图类型表达式,本参数运算的结果为整型。分别对应以下值: 1:区域图 2:条形图 3:三维条形图 4:三维簇状条形图 5:堆积条形图 6:三维堆积条形图 7:柱形图 8:三维柱形图 9:三维簇状柱形图 10:堆积柱形图 11:三维堆积柱形图 12:折线图 13:饼型图 14:散列图 15:三维区域图 16:三维折线图 17:三维饼型图 18:时序状态图 19:时间走势图 20:双轴折线图 21:双轴柱线图 22:雷达图 23:甘特图 24:仪表盘 25:里程碑 |
返回值:
统计图
示例:
graph(2) 计算条形图
函数说明:
根据布尔表达式的不同计算结果,返回不同的值。本函数从左到右计算,先出现的布尔表达式先算,如果出现为true的表达式,则返回相应的结果,后面的不再计算。如果没有一个布尔表达式为true,但是有缺省值表达式,则返回缺省值;如果没有一个布尔表达式为true,并且没有缺省值表达式,则返回null。
语法:
if(a,b,c)
if(x1:y1,…,xk:yk;y)
参数说明:
a |
布尔表达式 |
b |
值表达式,如果布尔表达式a的结果为真,则返回值表达式b的计算结果 |
c |
值表达式,如果布尔表达式a的结果为假,则返回值表达式c的计算结果 |
xk |
布尔表达式 |
yk |
值表达式,如果对应xi表达式结果为真,则返回值表达式yi的计算结果 |
y |
缺省值表达式,如果所有布尔表达式xi的结果都为假,则返回本表达式计算结果 |
返回值:
数据类型不定,由值表达式的运算结果决定。如果布尔表达式都为假,并且没有缺省表达式,则返回null。
示例:
例1:if(value()>1,"true","false")
当前格值大于1返回true,否则返回false
例2:if(value()>90:"Excellent",value()>80:"Good",value()>60:"Passed";"Failed")
当当前格的值大于90时,返回“Excellent”,大于80则返回“Good”,大于60则返回“Passed”,否则返回“Failed”
例3:if(A4>90:"Excellent",A4>80:"Good",A4>60:"Passed")
当A4单元格的值大于90时,返回“Excellent”,大于80则返回“Good”,大于60则返回“Passed”,否则返回null
函数说明:
判断第一个表达式的值是否为空,若为空则返回指定值,不为空则返回该表达式的值。
语法:
ifn( valueExp1, valueExp2 )
参数说明:
valueExp1 |
需要计算的表达式,其结果不为空时返回其值 |
valueExp2 |
需要计算的表达式,当valueExp1结果为空时返回此值 |
返回值:
valueExp1或valueExp2的结果值
示例:
例1:ifn(A1,"") 表示当A1为空时,返回空串,否则返回A1
例2:ifn(value(),0) 表示当当前格为空时返回0,否则返回当前格的值
函数说明:
获得指定单元格的左主格
语法:
lefthead({Cell{,level}})
参数说明:
Cell |
指定单元格,参数为空时为当前单元格。 |
level |
左主格层次,0为当前主格,每向上一级层次加1,默认为0。 |
返回值:
单元格值
示例:
例1:lefthead() 获得当前单元格的左主格
例2:lefthead(B3,1) 获得单元格B3的左主格的左主格
函数说明:
获得一个枚举的数据集合
语法:
list(valueExp1{,valueExp2{,valueExp3{,……}}})
参数说明:
valueExp(n) |
可以是常数或表达式,也可以是集合表达式 |
返回值:
一组枚举数据的集合
选项:
@m |
各元素递归并集,对内部的list展开 |
示例:
例1:list(1,3,5,7,9) {1,3,5,7,9}
例2:list("abc","def","ghj") {"abc","def","ghj"}
例3:list@m(arg1,to(1,3),"a","b","c") 假设arg1是个整数组,其值为7,8,9,那么该表达式的结果值为{7,8,9,1,2,3,"a","b","c"}
函数说明:
显示值对照表函数,从对照表中找出当前单元格对应值的显示值,没有则返回null
语法:
map(valueListExp, displayListExp)
参数说明:
valueListExp |
真实值列表,可以是可扩展单元格或结果为集合列表的表达式 |
displayListExp |
显示值列表,可以是可扩展单元格或结果为集合列表的表达式 真实值列表和显示值列表一一对应 |
返回值:
字符型,和当前格真实值对应的显示值,没有则返回null
示例:
例1:map(to(1,3),list("男","女","不定"))
在显示值的表达式中输入该函数。当前单元格格值为1时,显示"男",2时显示"女",3时显示"不定",其它值则返回单元格格值本身。
例2:map(arg1,arg2)
在显示值的表达式中输入该函数。其中arg1为1,2,3组成的参数组,arg2为"男","女","不定"组成的字符串组,结果同例1
例3:map(list(1,2,3),list("男","女","不定"))
在显示值的表达式中输入该函数。结果同例1
函数说明:
对可扩展单元格或集合表达式求最大值
语法:
max(exp)
max(exp,cellExp)
参数说明:
exp |
需要求最大值的单元格或表达式,一般为可扩展单元格或集合表达式 |
cellExp |
单元格或单元格集合,以cellExp里的单元格为当前格计算表达式exp |
返回值:
数据类型不定,由exp的计算结果决定
示例:
例1:max([A1:A10]) 求出单元格A1至A10之间的最大值
例2:max(arg1) 其中arg1是参数组,求出arg1中的最大值
例3:max(B1{}) 表示求得当前主格扩展区域内所有扩展后的B1单元格的最大值
例4:max(B1[`0]{}) 表示求得根坐标下所有扩展后的B1单元格的最大值
例5:max(B1+C1,A1[`0]{}) 计算分别与每个A1相对应的B1、C1的和的最大值
函数说明:
返回输入的单元格(格集)中值最大的单元格组成的List,如果存在多个单元格的值相等且最大,则这些单元格都会被返回。
语法:
maxc(cellExp1{,cellExp2{,......}})
参数说明:
cellExp1 |
单元格(格集)或单元格(格集)表达式 |
返回值:
单元格List
示例:
例1:maxc(A1,A2,A3,A4) 求出单元格A1至A4之间值最大的单元格组成的列表
例2:maxc(A1{},A2) 求A1扩展出来的所有单元格和A2中值最大的单元格组成的列表
函数说明:
求当前列中所有非合并格的显示串的最大字符长度
(注意:ASCII码大于255的字符长度为2)
语法说明:
maxwidth()
返回值:
整数
示例:
一般用于列首格中,动态控制列宽
例1:在列首格的单元格宽度属性中写入8*maxwidth(),表示动态调整当前列宽为单元格显示值最大字符长度*8个像素
函数说明:
对可扩展单元格或集合表达式求最小值
语法:
min(exp)
min(exp,cellExp)
参数说明:
exp |
需要求最小值的单元格或表达式,一般为可扩展单元格或集合表达式 |
cellExp |
单元格或单元格集合,以cellExp里的单元格为当前格计算表达式exp |
返回值:
数据类型不定,由exp的计算结果决定
示例:
例1:min([A1:A10]) 求出单元格A1至A10之间的最小值
例2:min(arg1) 其中arg1是参数组,求出arg1中的最小值
例3:min(B1{}) 表示求得当前主格扩展区域内所有扩展后的B1单元格的最小值
例4:min(B1[`0]{}) 表示求得根坐标下所有扩展后的B1单元格的最小值
例5:min(B1+C1, A1[`0]{}) 计算分别与每个A1相对应的B1、C1的和的最小值
函数说明:
返回输入的单元格(格集)中值最小的单元格组成的List,如果存在多个单元格的值相等且最小,则这些单元格都会被返回。
语法:
minc(cellExp1{,cellExp2{,......}})
参数说明:
cellExp1 |
单元格(格集)或单元格(格集)表达式 |
返回值:
单元格List
示例:
例1:minc(A1,A2,A3,A4) 求出单元格A1至A4之间值最小的单元格组成的列表
例2:minc(A1{},A2) 求A1扩展出来的所有单元格和A2中值最小的单元格组成的列表
函数说明:
计算一个值在一个完全划分中的位置
语法:
plot( valueExp, ListExp)
参数说明:
valueExp |
返回值的表达式,值可以是字符串、数值、日期、时间等 |
ListExp |
返回同valueExp数据类型相同的数组,要求其中元素从小到大排列 |
返回值:
整数
选项:
@c |
表示与ListExp元素比较时包含等于 |
@z |
表示ListExp中元素从大到小排列,否则为从小到大排列 |
示例:
例1:plot( 0, list(0,10,100) ) 返回1,第一个集合为<0,不包含0,第二个集合为>=0且<10,所以0落在了第二个集合中,集合的编号从0开始起编,依次为0,1,2,3,所以结果为1
例2:plot@c( 0, list(0,10,100)) 返回0
例3:plot( 10, list(0,10,100)) 返回2
例4:plot@cz(10,list(100,10,0)) 返回1
详细说明:
划分是指将一个集合划分成几个集合,如数组{0,10,100}在不包含等于的情况下 将整数集或实数集划分成4个集合,依次分别是<0、<10(此集合中元素必定>=0)、<100(此集合中元素必定>=10)及其它(即>=100);
在包含等于的情况下将整数集或实数集划分成4个集合,分别是<=0、<=10(且>0)、<=100(且>10)及其它(即>100);
对于数组{100,10,0},不包含等于时也划分成4个集合,分别为>100,>10(且<=100), >0(且<=10)及其它(即<=0);
不包含等于时则为>=100,>=10(且<100),>=0(且<10)及其它(即<0)
函数说明:
执行sql语句,返回结果数据集合,只能返回单列数据,如果sql语句中有多个字段,则返回第一个字段的结果值
语法:
query(sqlStatement{,arg1{,arg2{,arg3{,……}}}}{;dbName})
参数说明:
sqlStatement |
合法的sql语句 |
arg(n) |
sql语句的参数,可以是常数也可以是表达式 |
dbName |
数据库逻辑名,为null表示缺省数据库 |
返回值:
一组数据的集合,数据类型由sql语句的第一个选出字段决定
示例:
例1:query("select NAME from EMPLOYEE where GENDER =?","F";"demo")
表示从demo数据库的EMPLOYEE表中选出GENDER ="F"的记录,返回其NAME字段值
例2:query("select * from EMPLOYEE where GENDER =? and EID <?","F",11;"demo")
表示从demo数据库的EMPLOYEE表中选出GENDER ="F"并且EID <11的记录,返回其第一个字段的值
函数说明:
取得当前单元格所在行的行号
语法:
row({cellExp})
参数说明:
cellExp |
单元格表达式(不写表示当前单元格) |
返回值:
整数
示例:
在第三行单元格中写入=row(),返回值为3,如果第三行存在纵向扩展格,则行号依次改变。
函数说明:
取得指定扩展单元格的同源号,即扩展格扩展后,将此单元格的同源格按行(列)号从小到大排序后,此单元格所在的序号。
语法:
seq({cellExp})
参数说明:
cellExp |
单元格表达式,必须返回扩展格 |
返回值:
整数
示例:
假设A1是扩展格,B1的主格为A1,在B1单元格中写入=seq(A1),则扩展后B1的值将依次从1变到A1扩展出来的单元格的数目。
函数说明:
对数组进行排序
语法:
sort(arrayExp)
参数说明:
arrayExp |
数组表达式,譬如group,select,list等函数 |
返回值:
数组,元素数据类型由参数arrayExp决定
选项:
@z |
对数组按降序排列 |
示例:
例1:sort([5,2,3,4]) 返回值为{2,3,4,5}
例2:sort@z([5,2,3,4]) 返回值为{5,4,3,2}
例3:sort(list(5,2,3,4)) 返回值为{2,3,4,5}
例4:sort(ds1.select(EID)) 返回值按照EID升序排列
例5:sort(ds1.group(DEPT)) 返回值按照分组后的DEPT升序排列
函数说明:
动态解析并计算集算器表达式,等同于在集算器中执行eval函数。
语法:
spl(StringExp ,{argExp})
备注:
将表达式串作为StringExp的结果,分析计算返回。?对应argExp计算结果,如果有多个?那么就可能有多个argExp,argExp和?是一一对应的。
如果?个数大于argExp个数,则会从第一个argExp开始循环。
通常还可以使用序号为?指定参数,例如spl( "?2/?1", 3, 6 ) ,第一个?对应第二个参数,第二个?对应第一个参数,因此返回结果为2。
参数说明:
StringExp |
待计算的表达式串 |
argExp |
参数表达式 |
函数关键字:
? |
在StringExp中代表argExp的值 |
返回值:
表达式的结果值,数据类型由表达式决定
示例:
|
A |
|
1 |
="1+3" |
|
2 |
=spl(A1) |
4 |
3 |
=4 |
|
4 |
=spl("?+5",A3) |
? 为关键字,代表A3参数值,返回值9 |
5 |
=spl("replace(?,\"X\",\"*\")","ZXcm") |
使用replace函数替换第一个?参数值,返回值”Z*cm” |
6 |
=spl("(?+1)/?",3,4) |
第一个?值为3,第二个?值为4,返回值1.0 |
7 |
=spl( "(?+?)*?",1, 3 ) |
第一个?值为1,第二个?值为3,第三个?值为1,返回值4 |
8 |
=spl("?+?", 3 ) |
结果是6,因为argExp数量小于?,所以它会重复使用的argExp。 |
9 |
=spl("?2/?1", 3, 6 ) |
第一个?对应第二个参数,第二个?对应第一个参数,因此结果为2.0 |
函数说明:
获得一个集合的子集合
语法:
sublist(srcList,startPos,count)
参数说明:
srcList |
源集合表达式 |
startPos |
起始索引,从0开始计数 |
count |
返回的元素数目 |
返回值:
集合的子集合
示例:
例1:sublist( list(1,3,5,7,9), 1, 2 ) 结果为{ 3, 5 }
函数说明:
对可扩展单元格或集合表达式进行求和
语法:
sum(exp)
sum(exp,cellExp)
参数说明:
exp |
需要被求和的单元格或表达式,一般为可扩展单元格或集合表达式 |
cellExp |
单元格或单元格集合,以cellExp里的单元格为当前格计算表达式exp |
返回值:
实数或者字符型,由被汇总的单元格数据类型决定
示例:
例1:sum([A1:A10])
求出单元格A1至A10的合计值,被统计单元格可以是数值型也可以是字符型
例2:sum(arg1)
其中arg1是参数组,求出arg1中所有元素的合计值
例3:sum(B1{})
表示求得当前主格扩展区域内所有扩展后的B1单元格的合计值
例4:sum(B1[`0]{})
表示求得根坐标下所有扩展后的B1单元格的合计值
例5:sum(B1+C1,A1[`0]{})
计算分别与每个A1相对应的B1、C1的和的合计值
函数说明:
抛出一个ReportError异常
语法:
throwe({msg})
参数说明:
msg |
异常信息字符串 |
示例:
throwe("单元格值有误") 抛出一个异常,显示信息为“单元格值有误”
函数说明:
生成一组连续的整数数据
语法:
to(startExp,endExp{,stepExp})
参数说明:
startExp |
整数数据开始的表达式 |
endExp |
整数数据结束的表达式 |
stepExp |
整数数据步长的表达式,省略为1 |
返回值:
连续的整数数列
示例:
例1:to(1,5) 相当于list(1,2,3,4,5) ,从1开始,依次加1直到5
例2:to(1,5,2) 相当于list(1,3,5),从1开始,依次加2直到5
例3:to(-5,-10,-2) 相当于list(-5,-7,-9) ,从-5开始,依次减2直到-9
例4:to(-10,-8) 相当于list(-10,-9,-8) ,从-10开始,依次加1直到-8
函数说明:
获得指定单元格的上主格
语法:
tophead({Cell{,level}})
参数说明:
Cell |
指定单元格,参数为空时为当前单元格。 |
level |
上主格层次,0为当前主格,每向上一级层次加1,默认为0。 |
返回值:
单元格值
示例:
例1:tophead() 获得当前单元格的上主格
例2:tophead(E3,1) 获得单元格E3的上主格的上主格
函数说明:
取得当前单元格的值
语法:
value()
返回值:
当前单元格的值
函数说明:
根据指定位置返回数组或者集合表达式中的某一个元素
语法:
valueat(arrayexp,suffixExp)
参数说明:
arrayexp |
数组或者集合表达式 |
suffixExp |
整数,用于指定返回集合中的第几个元素,以0开始计数 |
返回值:
集合中的一个元素,数据类型由集合中的元素类型决定
示例:
例1:valueat(to(5,8),2) 返回值为:7
例2:valueat(["a","b","c"],2) 返回值为:"c"
函数说明:
检测文件是否存在。若存在则返回true,否则返回false。
语法:
fexists(fileName)
参数说明:
fileName |
需要检测的文件名称 |
返回值:
布尔型
选项:
@m |
文件路径为绝对路径时如没有找到,则会到主目录搜索;使用相对路径时,会直接到主目录下搜索 |
@c |
文件路径为绝对路径时如没有找到,则会到类路径下搜索;使用相对路径时,会直接到类路径下搜索 |
@a |
文件路径为绝对路径时如没有找到,则会到应用根目录下搜索;使用相对路径时,会直接到应用根目录下搜索 |
|
缺省时文件路径必须为绝对路径 |
示例:
例1:fexists("D:/1.jpg")
例2:fexists@m("D:/1.jpg") 到D盘根目录下找1.jpg文件,若存在返回true,否则到主目录下搜索,存在返回true,否则返回false。
例3:fexists@c("1.jpg") 到类路径下找1.jpg文件,若存在返回true,否则返回false。
例4:fexists@a("1.jpg") 到应用根目录下找1.jpg文件,若存在返回true,否则返回false。