单元格函数

avg

注:该函数支持excel公式导出、支持填报报表单元格自动计算

函数说明:对可扩展单元格或集合表达式求平均值

语法:avg(expression{,isContainNull})

参数说明:

  1. expression 要求平均值的单元格或表达式,一般为可扩展单元格或集合表达式
  2. isContainNull 是否对null元素进行计数

举例说明:

  1. 例1:avg(F1{}),求F1单元格值的平均值,F1单元格为扩展单元格
  2. 例2:avg(B2:E2),求B2单元格到E2单元格的值的平均值。
  3. 例3:avg(F1{},false),求F1单元格值的平均值,并且不计算F1单元格中的空值。F1单元格为扩展单元格

balance

函数说明:报表总配平函数

语法:balance(cells_list, total_value {, balance_unit})

参数说明:

  1. cells_list 需要配平的单元格列表
  2. total_value 配平时依据的汇总值
  3. balance_unit 配平调整单位。无该参数时默认使用末行调整策略;设置该参数时使用多行调整策略,每行调整一个单位值

举例说明:

  1. 例1:balance(B3{},1),B3{}是百分比集合,这个公式的意思让这个B3{}这个集合百分比的和等于1,如果不等于适当的调整B3集合的值
  2. 例2:balance(B3{},1,0.0001),这个公式的意思是使用让B3{}这个集合使用多行调整策略,每行调整0,0001

call

函数说明:执行存储过程,返回结果数据集合,只能返回单列数据,如果存储过程返回多个字段,则返回第一个字段的结果值

语法:call([dataSourceName,]sqlStatement{,arg1{,arg2{,arg3{,……}}}})

参数说明:

  1. dataSourceName 多数据源时,需要指定数据源名称
  2. sqlStatement 合法的调用存储过程的sql语句
  3. arg(n) sql语句的参数,可以是常数也可以是表达式,如果是输出结果集的参数,对应的参数表达式写成"@@return"

注意

如果你的存储过程是将结果集返回给一个输出参数,这个时候,如果你的数据库正好是oracle,则还需要将这个输出参数的结果类型设置为“游标”。

举例说明:

  1. 例1:call("oracle_ds","{call BJ_TEST_PROC (?,?)}","@@return",@pid),数据源名称为“oracle_ds”,执行存储过程BJ_TEST_PROC,两个参数分别为输出参数 “@@return”,输入参数“@pid”(参数pid是用户自己创建的)

case

注:该函数支持excel公式导出、支持填报报表单元格自动计算

函数说明:根据布尔表达式的不同计算结果,返回不同的值。本函数从左到右计算,先出现的布尔表达式先算,如果出现为true的表达式,则返回相应的结果,后面的不再计算。如果没有一个布尔表达式为true,而且有缺省值表达式,则返回缺省值,否则返回null

语法:case(boolExp1,valueExp1{,boolExp2,valueExp2 {,boolExp3,valueExp3 {,…… {defaultExp}}}})

参数说明:

  1. boolExp(n) 布尔表达式,如果结果为真,则返回对应的值表达式计算结果
  2. valueExp(n) 值表达式,和布尔表达式一一对应
  3. defaultExp 缺省值表达式,如果所有布尔表达式结果都为假,则返回本表达式计算结果

举例说明:

  1. 例1:case(@value=0,‘无折扣’,@value=0.1,‘折扣为10%’,@value=0.5,‘折扣为50%’),当前值为0时,显示为“无折扣”,当前值为0.1时,显示为“折扣为10%”,当前值为0.5时,显示为“折扣为50%”
  2. 例2:case(@value=0,‘无折扣’,@value=0.1,‘折扣为10%’,@value=0.5,‘折扣为50%’,‘折扣不明’),当前值为0时,显示为“无折扣”,当前值为0.1时,显示为“折扣为10%”,当前值为0.5时,显示为“折扣为50%”,当前值为其他的值的时候,显示为“折扣不明”

col

函数说明:取得当前单元格所在列的列号;此函数只能在select、group等扩展函数之后使用,否则取出的列号可能不正确。

语法:col()

参数说明:

返回值:整数

count

注:该函数支持excel公式导出、支持填报报表单元格自动计算

函数说明:对可扩展单元格或集合表达式进行计数

语法:count(expression{,filterExp})

参数说明:      

expression 需要被计数的单元格或表达式,一般为可扩展单元格或集合表达式

filterExp 过滤条件表达式,使用@item关键字代表集合中的条目

支持填报报表单元格自动计算

举例说明:

  1. 例1:count(A1{}),对A1单元格中的记录进行计数,A1单元格为扩展单元格。
  2. 例2:count(A1:E1),对A1单元格到E1单元格中的记录进行计数。
  3. 例3:count(A1{},@item>0),对A1单元格扩展出的集合中的记录进行计数,并且判断A1集合中的每一个值进行判断是否大于0,如果大于0就计算,否则就不计算。A1单元格为扩展单元格。

customcell

函数说明:自定义单元格函数

语法:customcell(implclass{,param1,param2,param3...})

参数说明:

implclass 自定义单元格实现类的全路径

param1 参数1

param2 参数2

param3 参数3

举例说明:

例1:customcell("bios.report.user.demo.cell.MyChartCell","bar","柱状图","城市","销售额",a3{},b2+"年",b3{}) 表示调用MyChartCell这个类实现柱状图,X轴的标题为城市,Y轴的标题为销售额,分类轴为a3{},系列名为b2+"年",y轴数据集合为b3{}。

ds

函数说明:按名称取得数据集对象,本函数用于动态改变表达式的数据集对象,用法很灵活,但是性能较低,须慎用。

语法:ds( stringExp )

参数说明:stringExp 数据集的名称

返回值:数据集对象

说明: 本函数的返回值是表达式的一个元素,不能作为单元格的数据值,必须经过二次运算。

举例说明:例1:ds("ds1").select(#0) 表示取出ds1数据集中的记录行号集合

dsunion

函数说明:合并多个数据集,参与合并的多个数据集必须结构一致、列名一致。

语法:dsunion(dsname1,dsname2{,dsname3,……},newdsname)

参数说明:

dsname1 参与合并的第一个数据集。

dsname2 参与合并的第二个数据集。
……

newdsname  合并后新数据集的名称。

备注:至少要有两个参与合并的数据集。

举例说明:例1:dsunion(ds1,ds2,ds),用ds可以直接取ds1和ds2数据集中的字段。

eval

注:该函数支持填报报表单元格自动计算

函数说明:动态解释并计算表达式

语法:eval(stringExp)

参数说明:stringExp  待计算的表达式字符串

返回类型:表达式的结果集,数据类型由表达式决定

举例说明:

  1. 例1: eval("1+2+3") 返回:6
  2. 例2: eval("a+b+c") 返回:abc
  3. 例3:eval("ds.group(货主地区)") 返回:集合(东北,华北,...)

filedata

函数说明:获取文件附件单元格中, 用户上传的文件数据流, 在填报操作中使用

语法:filedata( cellId, dataType )

参数说明:

cellId 文件附件单元格的ID

dataType 数据流的类型, 可选值为'blob','clob','bytes', 根据数据库字段选择

返回类型:文件数据, 用于大字段保存

举例说明:例1:filedata(B3, 'bytes'),返回附件单元格B3的上传文件的bytes类型的数据流

filename

函数说明:获取文件附件单元格中, 上传文件的保存名称, 在填报操作中使用

语法:filename( cellId )

参数说明:cellId 文件附件单元格的ID

返回类型:文件名称, 用于数据库保存

举例说明:例1:filename(B3),返回附件单元格B3的上传文件的名称

filepath

函数说明:获取文件附件单元格中, 上传文件的保存路径, 在填报操作中使用

语法:filepath( cellId )

参数说明:cellId 文件附件单元格的ID

返回类型:文件路径, 用于数据库保存

举例说明:例1:filepath(B3),返回附件单元格B3的上传文件的路径

if

注:该函数支持excel公式导出、支持填报报表单元格自动计算

函数说明:根据布尔表达式的不同结果,返回不同的值

语法:if(boolExp, trueValueExp, falseValueExp)

参数说明:

boolExp  结果为布尔类型的表达式

trueValueExp  布尔表达式为真时,返回本参数的计算结果,本参数可以是常数或表达式

falseValueExp  布尔表达式为假时,返回本参数的计算结果,本参数可以是常数或表达式

举例说明:例1:if(@value='1','男','女'),如果条件“@value='1'”成立,则显示“男”,如果不成立,显示“女”。

list

注:该函数支持excel公式导出、支持填报报表单元格自动计算

函数说明:获得一个枚举的数据集合

语法:list(valueExp1{,valueExp2{,valueExp3{,……}}})

参数说明:valueExp(n)  可以是字符型数据,整型数据,浮点型数据,布尔型数据或表达式

举例说明:

  1. 例1:list(1,2,3),结果为:1,2,3。
  2. 例2:list('一级', '二级'),结果为:一级,二级
  3. 例3:list(12>3,12=13),结果为:true,false

loc

函数说明:计算一个值在一个完全划分中的位置

语法:loc( valueExp, ListExp{, eqExp}{, ascExp} )

参数说明:

valueExp 返回值的表达式,值可以是字符串、数值、日期、时间等

ListExp 返回同valueExp数据类型相同的数组,要求其中元素按序排列,排列顺序由ascExp指定

eqExp 匹配条件表达式,返回布尔值的表达式,缺省为false,为false表示与ListExp元素比较时不包含等于

ascExp 排序表达式,返回布尔值的表达式,缺省为true,即表示ListExp中元素从小到大排列,否则为从大到小排列

举例说明:

  1. 例1:loc( 0, list(0,10,100) ) 返回1,第一个集合为<0,不包含0,第二个集合为>=0且<10,所以0落在了第二个集合中,集合的编号从0开始起编,依次为0,1,2,3,所以结果为1
  2. 例2:loc( 0, list(0,10,100),true,true) 返回0
  3. 例3:loc( 10, list(0,10,100), false ) 返回2
  4. 例4:loc(10,list(100,10,0),true,false) 返回1

备注:划分是指将一个集合划分成几个集合,如数组{0,10,100}在eqExp返回false的情况下,将整数集或实数集划分成4个集合,依次分别是<0、<10(此集合中元素必定>=0)、<100(此集合中元素必定>=10)及其它(即>=100);在eqExp返回true的情况下将整数集或实数集划分成4个集合,分别是<=0、<=10(且>0)、<=100(且>10)及其它(即>100);对于数组{100,10,0},eqExp为false时也划分成4个集合,分别为>100,>10(且<=100), >0(且<=10)及其它(即<=0); eqExp为true时则为>=100,>=10(且<100),>=0(且<10)及其它(即<0)

lookup

函数说明:表间取数函数,从其他报表中获取数据

语法:lookup(subrpt, cellId)

参数说明:

subrpt 要从中取数的其他报表,使用subreport()函数获取

cellId 要取值的单元格的唯一标识

举例说明:例1:lookup(subreport('Demo/test.brt'),'a') 获取Demo文件夹下名为test的报表中标识符为a的单元格的值

map

函数说明:显示值对照表函数,从对照表中找出当前单元格对应值的显示值,没有则返回null

语法:map(valueListExp, displayListExp)

参数说明:

valueListExp  真实值列表,可以是可扩展单元格或结果为集合列表的表达式

displayListExp  显示值列表,可以是可扩展单元格或结果为集合列表的表达式

注意

真实值列表和显示值列表一一对应

举例说明:例1:map(list('1', '2'),list('男','女')),当值为1时,显示为“男”,当值为2时,显示为“女”。

max

注:该函数支持excel公式导出、支持填报报表单元格自动计算

函数说明:对可扩展单元格或集合表达式求最大值

语法:max(expression)

参数说明:expression 需要求最大值的单元格或表达式,一般为可扩展单元格或集合表达式

举例说明:

  1. 例1:max(F1{}),统计F1单元格中的最大值,F1为可扩展单元格。
  2. 例2:max(A1:E1),统计A1单元格到E1单元格的最大值。
  3. 例3:max(list(A1,E1)),判断A1和E1的值的最大值。

min

注:该函数支持excel公式导出、支持填报报表单元格自动计算

函数说明:对可扩展单元格或集合表达式求最小值

语法:min(expression)

参数说明:expression:需要求最小值的单元格或表达式,一般为可扩展单元格或集合表达式

举例说明:

  1. 例1:min(F1{}),统计F1单元格中的最小值,F1为可扩展单元格。
  2. 例2:min(A1:E1),统计A1单元格到E1单元格的最小值。
  3. 例3:min(list(A1,E1)),判断A1和E1的值的最小值。

nvl

注:该函数支持excel公式导出、支持填报报表单元格自动计算

函数说明:判断第一个表达式的值是否为空,若为空则返回指定值

语法:nvl( valueExp1, valueExp2 )

参数说明:

valueExp1 需要计算的表达式,其结果不为空时返回其值

valueExp2 需要计算的表达式,当valueExp1结果为空时返回此值

返回值:valueExp1或valueExp2的结果值

举例说明:

  1. 例1:nvl(A1,"") 表示当A1为空时,返回空串,否则返回A1
  2. 例2:nvl(num,0) 表示当num的值为空时,返回0,否则返回num的原始值

query

函数说明:执行sql语句,返回结果数据集合,只能返回单列数据,如果sql语句中有多个字段,则返回第一个字段的结果值

语法:query([dataSourceName,]sqlStatement{,arg1{,arg2{,arg3{,……}}}})

参数说明:

dataSourceName 多数据源时,需要指定数据源名称

sqlStatement 合法的sql语句

arg(n) sql语句的参数,可以是常数也可以是表达式

举例说明:

  1. 例1:query("BIOS_DS","select 联系人姓名 from 客户  ") ,显示为数据源“BIOS_DS”中的“客户”表的“联系人姓名”一栏的记录。
  2. 例2:query("BIOS_DS","select 联系人姓名 from 客户 where 联系人姓名=? ",@name),显示为数据源“BIOS_DS”中的“客户”表的“联系人姓名”一栏的记录,其中联系人姓名需要一个参数传递,name为用户自己创建的参数。

rank

函数说明:获取给定值在一个列表中的排名

语法:rank(valueExp, listExp{,desc})

参数说明:

valueExp  要计算排名的值表达式

listExp  值列表表达式

desc  排名方式,true表示降序排列(从大到小),false表示升序排列(从小到大)

举例说明:例1:rank(C3,C3[A3]{},true) ,c3为要排名的数据,C3[A3]表示C3按A3进行排名,并降序排序。

row

函数说明:取得当前单元格所在列的行号;此函数只能在select、group等扩展函数之后使用,否则取出的行号可能不正确。

语法:row()

参数说明:

返回值:整数

注意

当row函数所在单元格在分组函数之后时,就把row()表达式写在单元格属性显示值里。

sort

函数说明:对数组进行排行

语法:sort(arrayExp{,boolExp})

参数说明:

arrayExp  数组表达式,例如group、select、list等函数

boolExp   布尔表达式,true表示升序,否则降序(默认为false)

举例说明:

  1. 例1:=sort(list(1,2,3,4,5,6,7))返回:7,6,5,4,3,2,1
  2. 例2:=sort(ds1.select(运动员ID),true)返回:1,2,3,4,5,6,7,8

subList

函数说明:    从一个集合中根据条件获取一个子集出来

语法:

语法1:subList(initList,fromPos{,toPos})

语法2: subList(initList,indexList{,include})

参数说明:

initList 集合类型,源列表

fromPos 整数类型,子列表的起始位置,从0开始,包含该位置

indexList 整数集合类型,位置列表

include 布尔类型,为true时包含位置列表中的数据,为false时排除位置列表中的数据;默认为true

返回值:集合类型,截取的子列表

举例说明:

  1. 例子1:subList( list(1,3,5,7,9), 1, 3 ) 结果为{ 3, 5 }
  2. 例子2:subList( list(1,3,5,7,9), 1) 结果为{ 3,5,7,9}
  3. 例子3:subList( list(A,B,C,D), list(1,3), true) 结果为{ B, D }
  4. 例子4:subList( list(A,B,C,D), list(1,3), false) 结果为{ A,C }

subreport

函数说明:子报表函数

语法:subreport(filepath{,params{,vars}})

参数说明:

filepath 报表模板相对路径或ID

params 报表参数,字符串类型(param1=value1;param2=value2)

vars 报表变量,字符串类型(var1=value1;var2=value2)

举例说明:例1:subreport('Demo/test.brt',‘id=’+A3+';name='+A4,'sql='+B2) 表示子报表的路径为Demo文件夹下test.brt 传的参数为id=A3单元格的值和name=A4的单元格的值,传的变量为sql=B2单元格的值

sum

注:该函数支持excel公式导出、支持填报报表单元格自动计算

函数说明:对可扩展单元格或集合表达式进行求和

语法:sum(expression,filterExp)

参数说明:

expression  需要被求和的单元格或表达式,一般为可扩展单元格或集合表达式

filterExp 过滤条件表达式,使用@item关键字代表集合中的条目

举例说明:

  1. 例1:sum(F1{}),计算F1中所有记录的和,F1为扩展单元格。
  2. 例2:sum(A1:F1),计算A1单元格到F1单元格中所有记录的和。
  3. 例3:sum(A1{},@item>0),对A1单元格扩展出来的集合中的记录进行求和,并且判断A1集合中的每一个值进行判断是否大于0,如果大于0就计算,否则就不计算。A1单元格为扩展单元格。

uuid

函数说明:获取一个UUID,可以在填报表中用来创建数据ID

语法:uuid() 或 uuid(sep)

参数说明:sep 布尔值,生成的uuid中是否包含分隔符'-',缺省为true

举例说明:

  1. 例1:uuid(),显示为 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx格式
  2. 例1:uuid(false),显示为 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx格式

uniquelist

函数说明:数组去重(取重)函数,生成一组只有唯一值的数组

语法:uniquelist(initList{,rtnType})

参数说明:

initList  原始集合(数组、字符串组等)

rtnType 返回类型,如果为true,则返回去除重复元素后的集合,如果为false,则返回由重复元素组成的集合;默认为true

举例说明:

  1. 例1:uniqueList( list(1,3,3,1,5,7,9) ) 结果为{1, 3, 5, 7, 9 }
  2. 例2:uniqueList( list(1,3,3,1,5,7,9), false) 结果为{ 1, 3}
  3. 例3:uniqueList( list(A,B,B,C,D), true) 结果为{ A, B, C, D }
  4. 例4:uniqueList( list(A,B,B,C,D), false) 结果为{ B }

zone

函数说明:序列生成函数,生成一组整数序列、字符序列或日期序列

语法:zone(from, to{,isStrict})

参数说明:

from  开始的数值、字母或日期(如果参数是日期时间,会忽略时间,仅仅当作日期来处理)

to  结束的数值、字母或日期(如果参数是日期时间,会忽略时间,仅仅当作日期来处理)

isStrict  是否严格排序模式。在严格模式下,序列一定是从from到to排列的;在宽松模式下,序列是从小到大排列的;不设置该值的话,是宽松模式(即:默认是false)

举例说明:

  1. 例1:zone(1,3),生成的整数序列为1,2,3
  2. 例2:zone(a,f),生成的字母序列为a,b,c,d,e,f
  3. 例3:zone(K,F),生成的字母序列为F,G,H,I,J,K
  4. 例4:zone(K,F,true),生成的字母序列为K,J,I,H,G,F
  5. 例5:zone(todate('2021-02-27'),todate('2021-03-02')),生成的日期序列为2021-02-27,2021-02-28,2021-03-01,2021-03-02