函数说明:
将一个整数转化成汉字大写
语法:
chn( intExp{, abbrivateExp{, uppercaseExp }} )
参数说明:
intExp 整数表达式
abbrivateExp 为true时采用亿万千百十的写法,
为false时采用一二三四五六七的写法,缺省为false
uppercaseExp 为false时采用零一二三四五六七八九十百千,
为true时采用壹贰叁肆伍陆柒捌玖拾佰仟,缺省为false
返回值:
字符型
示例:
例1:chn(1234567,true) 返回:"一百二十三万四千五百六十七"
例2:chn(1234567) 返回:"一二三四五六七"
例3:chn(1234567,true,true) 返回:"壹佰贰拾叁万肆仟伍佰陆拾柒"
例4:chn(1234567,,false) 返回:"一二三四五六七"
函数说明:
取得当前单元格所在列的列号
语法:
col({cellExp})
参数说明:
cellExp 单元格表达式(不写表示当前单元格)
返回值:
整数
举例:
在B列单元格中写入=col(),返回值为2,如果B列存在横向扩展格,则列号依次改变。
函数说明:
计算参数的余弦值,其中参数以弧度为单位
相关的函数有sin() 计算参数的正弦值
tan() 计算参数的正切值
语法:
cos(numberExp)
参数说明:
numberExp 待计算余弦值的弧度数
返回值:
double型
示例:
例1:cos(pi()) 返回:-1
例2:cos(pi(2)) 返回:1
函数说明:
对可扩展单元格或集合表达式进行计数
语法:
count(expression{,containNull})
参数说明:
expression 需要被计数的单元格或表达式,一般为可扩展单元格或集合表达式
containNull 缺省为true,表示对null元素也进行计数;false则相反
返回值:
整数
示例:
例1:count(A1:B10,false) 以当前格为基格计算A1和B10之间总共有几个单元格,如果单元格的值为空则不进行计数
例2:count(A1[1]:B10[3])计算A1扩展出来的第一个格和B10扩展出来的第三个格之间总共有几个单元格
例3:count(arg1) 其中arg1是参数组,统计arg1中有几个数据
例4:count(B1{}) 表示求得当前主格扩展区域内所有扩展后的B1单元格的个数
例5:count(B1{`0}{}) 表示求得根坐标下所有扩展后的B1单元格的个数
函数说明:
将字符串转换成日期型数据
语法:
date(stringExp)
参数说明:
stringExp 字符串表达式,其结果必须返回合法日期格式的字符串
要求格式为yyyy-MM-dd,不含时间,如果含了时间,时间部分不转换
返回值:
日期时间型,但是时间部分都为00:00:00
示例:
例1:date("1982-08-09") 返回日期:1982-08-09 00:00:00
例2:date("1982-08-09 10:20:30") 返回日期:1982-08-09 00:00:00
函数说明:
将字符串或长整数转换成日期时间
语法:
dateTime(string)
dateTime(long)
参数说明:
string 格式为yyyy-MM-dd HH:mm:ss的字符串
long 以微秒计的长整数
返回值:
日期时间
示例:
例1:dateTime("2006-01-01 10:20:30") 返回:2006-01-01 10:20:30
例2:dateTime("2006-01-01 10:20:30:111") 返回:2006-01-01 10:20:30
例3:dateTime(12345) 返回:1970-01-01 08:00:12
函数说明:
将各种格式的日期字符串转换成日期时间型数据,转换时可以指定字符串的当前格式
语法:
datetime2(string, format)
参数说明:
string 各种格式的日期字符串
format 用于说明参数1的格式串
返回值:
日期时间型数据
示例:
例1:datetime2("12/28/1972","MM/dd/yyyy") 返回:1972-12-28 00:00:00
例2:datetime2("12/28/1972 10:23:43","MM/dd/yyyy hh:mm:ss") 返回:1972-12-28 10:23:43
例3:datetime2("19800227","yyyyMMdd") 返回:1980-02-27 00:00:00
例4:datetime2("1982年12月30日","yyyy年MM月dd日") 返回:1982-12-30 00:00:00
函数说明:
从日期型数据中获得该日在本月中是几号
语法:
day(dateExp)
参数说明:
dateExp 表达式,其结果必须为日期或中国日期时间格式的字符串
返回值:
整数
示例:
例1:day(datetime2("19800227","yyyyMMdd")) 返回:27
例2:day(dateTime(12345)) 返回:1
例3:day(dateTime("2006-01-15 10:20:30")) 返回:15
函数说明:
从日期型数据中获得该日的星期名称
语法:
dayName(dateExp)
参数说明:
dateExp 日期或标准日期格式的字符串,
如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss
返回值:
字符型
示例:
例1:dayName(datetime2("19800227","yyyyMMdd")) 返回:星期三
例2:dayName(dateTime(12345)) 返回:星期四
例3:dayName(dateTime("2006-01-15 10:20:30")) 返回:星期日
例4:dayName("12:14:34") 返回:星期四
例5:dayName("1972-11-08") 返回:星期三
例6:dayName("1972-11-08 10:20:30") 返回:星期三
函数说明:
从日期型数据中,获得该日位于一个星期中的第几天,星期天返回1,星期一返回2,依此类推
语法:
dayNo(dateExp)
参数说明:
dateExp 日期或标准日期格式的字符串,
如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss
返回值:
整数
示例:
例1:dayNo(dateTime2("19800227","yyyyMMdd")) 返回:4
例2:dayNo(dateTime("2006-01-15 10:20:30")) 返回:1
例3:dayNo("1972-11-08 10:20:30") 返回:4
函数说明:
计算两个日期型数据相差几天
语法:
daysAfter(dateExp1, dateExp2)
参数说明:
dateExp1 日期或标准日期格式的字符串,
如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss
dateExp2 日期或标准日期格式的字符串,
如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss
返回值:
整数
示例:
例1:daysAfter(dateTime("1983-12-15 10:20:30"),datetime2("1982年12月30日","yyyy年MM月dd日"))
返回:-350
例2:daysAfter("1983-12-15 10:20:30","1982-12-30") 返回:-350
函数说明:
获得指定日期所在月的天数
语法:
daysInMonth(dateExp)
参数说明:
dateExp 日期或标准日期格式的字符串,
如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss
返回值:
整数
示例:
例1:daysInMonth(datetime2("19800227","yyyyMMdd")) 返回:29
例2:daysInMonth("1972-11-08 10:20:30") 返回:30
例3:daysInMonth(dateTime("2006-01-15 10:20:30")) 返回:31
函数说明:
获得指定日期所在年或者指定年份的天数
语法:
daysInYear(dateExp)
daysInYear(year)
参数说明:
dateExp 日期或标准日期格式的字符串,
如:yyyy-MM-dd HH:mm:ss,yyyy-MM-dd,HH:mm:ss
year 返回整数的表达式
返回值:
整数
示例:
例1:daysInYear(datetime2("19800227","yyyyMMdd")) 返回:366
例2:daysInYear(dateTime("2006-01-15 10:20:30")) 返回:365
例3:daysInYear("1972-11-08 10:20:30") 返回:366
例4:daysInYear(2006) 返回:365
函数说明:
将字符串或数字型数值转换成大浮点数
语法:
deicmal(stringExp)
decimal(numberExp)
参数说明:
stringExp 给定数字串,可含小数点
numberExp 数值,只能少于等于64位,超过64位就要用字符串
返回值:
大浮点数BigDecimal
示例:
例1:decimal("123456789012345678901234567890") 返回:123456789012345678901234567890
例2:decimal(1234567890123456) 返回:1234567890123456(BigDecimal类型)
函数说明:
取单元格的显示值
语法:
disp( cell )
参数说明:
cell 单元格
返回值:
字符型
示例:
例1:if(disp(A1) like "中国*",true,false)
表示如果A1单元格的显示值含有中国的字样,返回true,否则返回false。
函数说明:
将字符串或数字转换成64位的双精度浮点数
语法:
double( string )
double( number )
参数说明:
string 需要转换的字符串表达式
number 数字
返回值:
64位的双精度浮点数
示例:
例1:double("1234567") 返回:1234567.0
例2:double(1234567) 返回:1234567.0
函数说明:
按名称取得数据集对象,本函数用于动态改变表达式的数据集对象,用法很灵活,
但是性能较低,须慎用。
语法:
ds( stringExp )
参数说明:
stringExp 数据集的名称
返回值:
数据集对象
说明:
本函数的返回值是表达式的一个元素,不能作为单元格的数据值,必须经过二次运算。
示例:
例1:ds("ds1").select(#0) 表示取出ds1数据集中的记录行号集合
函数说明:
从数据集中,从满足条件的记录中,算出给定字段或表达式的平均值
语法:
datasetName.avg(selectExp{,filterExp{,rootGroupExp{,containNull}}})
参数说明:
selectExp 需要计算平均值的字段或表达式,数值类型
filterExp 过滤条件表达式
rootGroupExp 是否root数据集表达式
containNull 是否对null元素进行计数
返回值:
实数
举例:
例1:ds1.avg(score,sex=="1")
表示从数据集的当前记录行集中过滤出sex为"1"的记录集合,
求得其score字段的平均值,score字段要求为数值型。
例2:ds2.avg(quantity*price)
表示对数据集的当前记录行集求得表达式quantity*price的平均值
例2:ds1.avg(score,,,false)
求得数据集的当前记录行集中score字段的平均值,如果某条记录的score字段值为空
则此条记录不计入记录数,score字段要求为数值型
函数说明:
此函数功能等同select1(),但是算法不同,采用二分法,适用于数据集记录
已经按照参考字段排好序的情况,运算速度比select1()快
语法:
datasetName.bselect_one(selectExp,"referExp1,referDescExp1,referValueExp1
{,referExp2,referDescExp2,referValueExp2{....}}}"{,rootGroupExp})
datasetName.bselect1(selectExp,"referExp1,referDescExp1,referValueExp1")
参数说明:
selectExp 选出字段或表达式
referExp1 参考字段表达式
referDescExp1 参考字段表达式的数据顺序,true表示降序排列,false表示升序排列
referValueExp1 参考字段的值表达式,一旦找到参考字段和该值相同的记录,即返回selectExp的值
...... 参考字段及其值可以多个,如果是多个,则找到多个参考字段都和值匹配的记录才返回
rootGroupExp 是否root数据集表达式
返回值:
数据类型不定,由selectExp的运算结果决定
示例:
例1:ds1.bselect1(name,"id,false,value()")
采用二分法,找到数据集ds1中id和当前格的值相等的记录,返回其name字段值
例2:ds1.bselect1(name,"id,false,value();class,false,A1;sex,true,B1")
采用二分法,找到数据集ds1中id和当前格的值相等、class和A1相等
且sex和B1相等的记录,返回其name字段值。注意这三个条件在表达式中的顺序
必需和它们在数据集中的排序先后相同,也就是说,在数据集中是先对id升序排
序,再对class升序排序,最后对sex进行降序排序的。
函数说明:
获得数据集的列数
语法:
datasetName.colcount()
返回值:
整数
举例:
例1:ds1.colcount() 获得ds1数据集的列数,整数类型
函数说明:
计算数据集当前记录行集中,满足条件的记录数
语法:
datasetName.count({filterExp{,rootGroupExp{,nullCheckExp}}})
参数说明:
filterExp 条件表达式,如果全部选出,则不要此参数,
rootGroupExp 是否root数据集表达式
nullCheckExp 检查某一条记录是否为空的标达式
返回值:
整数
举例:
例1:ds1.count()
表示对ds1中当前记录行集中所有记录进行计数,返回记录数。
例2:ds1.count(true)
含义同上,但是运算速度比ds1.count()慢,因此当记录全部选出时,
建议不要true
例3:ds1.count(quantity>500)
表示从ds1当前记录行集中选出quantity>500的记录进行计数,
返回记录数。
例4:ds1.count(,,ID)
表示当前记录行集中ID不为空的纪录数目
函数说明:
计算数据集当前记录行集中,满足条件的记录数,选出字段记录的行将被视为同一个记录
语法:
datasetName.dcount(<select_exp>{filterExp,{rootGroupExp}})
参数说明:
select_exp 要选择的字段列名/列号,,也可以是表达式。
列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推
filterExp 条件表达式,如果全部选出,则不要此参数,
rootGroupExp 是否root数据集表达式
返回值:
整数
举例:
例1:ds1.dcount( name )
从数据源ds1中选取name字段列的所有值,name相同的纪录被视为同一纪律
函数说明:
从数据集的当前行集中选取符合条件的记录,选出字段相同的行将会只保留第一行
语法:
datasetName.dselect( <select_exp>{, filter_exp{,rootGroupExp}} )
参数说明:
select_exp 要选择的字段列名/列号,,也可以是表达式。
列号用#n表示,例如#0代表第0列,#1代表第1列,依此类推
filter_exp 数据过滤表达式,如果全部选出,则此参数省略,仅用“,”占位。
rootGroupExp 是否root数据集表达式
返回值:
一组数据的集合,数据类型由select_exp的运算结果决定
函数示例:
例1:ds1.dselect( name )
从数据源ds1中选取name字段列的所有值,name相同的纪录只会保留第一个
函数说明:
根据表达式的不同计算结果,返回不同的值,然后按这些值进行分组。本函数:从左到右计算,先出现的表达式先算,如果出现满足的表达式,
则返回相应的结果,后面的不再计算。如果没有一个表达式满足条件,而且有缺省值表达式,则返回缺省值,否则返回null。
语法:
ds.enumGroup({hasNullGroup{,termExp1,resultExp1{,term2,resultExp2{,...{,defaultExp}}}}})
参数说明:
hasNullGroup 布尔表达式,true返回空组,false不返回空组
termExp(n) 条件表达式
resultExp(n) 返回结果表达式
defaultExp 缺省值表达式,如果所有表达式结果都不满足,则返回本表达式计算结果
函数说明:
获得数据集当前行或者当前组中第一行中,指定列的数据
语法:
datasetName.field( stringExp )
datasetName.field( #colNo )
参数说明:
stringExp 数据集列名的表达式
#colNo 数据集列号的表式方式,如第二列用#2,行号列用#0
返回值:
数据集的列对象,只能作为表达式的元素使用,不能作为最终单元格的值
说明:
此函数性能比较低,请慎用
举例:
例1:在报表中写入如下表达式
A B
┌─────────┬────────────┐
1 │ │ = to(1,ds2.colcount()) │
│ ├────────────┤
2 │ │ = ds2.fieldname(b1) │
├─────────┼────────────┤
3 │ = ds2.Select(#0) │ = ds2.field(b2) │
└─────────┴────────────┘
该报表相当于在B1中根据数据集ds2的列数进行横向扩展,在A3中根据
数据集的行数进行纵向扩展,然后在B2和B3中动态获取列名和列对象,
算出列值,这种用法可以实现动态列报表
该报表的预览结果如下:
┌───────┬───────┬───────┬───────┐
│ 客户编码 │ 客户名称 │ 电话 │ 传真 │
├───────┼───────┼───────┼───────┤
│ 1 │无锡食品加工厂│ 3454356 │ 4575775 │
├───────┼───────┼───────┼───────┤
│ 2 │天津长城化工厂│ 3452346 │ 4562674 │
├───────┼───────┼───────┼───────┤
│ 3 │江苏天龙食品集│ 4576546 │ 7465675 │
├───────┼───────┼───────┼───────┤
│ 4 │中国化工原料厂│ 4563456 │ 5675763 │
└───────┴───────┴───────┴───────┘
函数说明:
根据列号取数据集的列名
语法:
datasetName.fieldName( intExp )
参数说明:
intExp 数据集列号的表达式
返回值:
字符型
举例:
例1:ds1.fieldName(3) 返回"score",
表示数据集ds1中第三列的列名为"score"
例2:运用举例,在报表中写入如下表达式
A B
┌─────────┬────────────┐
1 │ │ = to(1,ds2.colcount()) │
│ ├────────────┤
2 │ │ = ds2.fieldname(b2) │
├─────────┼────────────┤
3 │ = ds2.Select(#0) │ = ds2.field(b2) │
└─────────┴────────────┘
该报表相当于在B1中根据数据集ds2的列数进行横向扩展,在A3中根据
数据集的行数进行纵向扩展,然后在B2和B3中动态获取列名和列对象,
算出列值,这种用法可以实现动态列报表
该报表的预览结果如下:
┌───────┬───────┬───────┬───────┐
│ 客户编码 │ 客户名称 │ 电话 │ 传真 │
├───────┼───────┼───────┼───────┤
│ 1 │无锡食品加工厂│ 3454356 │ 4575775 │
├───────┼───────┼───────┼───────┤
│ 2 │天津长城化工厂│ 3452346 │ 4562674 │
├───────┼───────┼───────┼───────┤
│ 3 │江苏天龙食品集│ 4576546 │ 7465675 │
├───────┼───────┼───────┼───────┤
│ 4 │中国化工原料厂│ 4563456 │ 5675763 │
└───────┴───────┴───────┴───────┘
函数说明:
从数据集中按顺序检索到符合过滤条件的所有记录,返回纪录的组,注意该函数不能返回具体值,函数只能用在附加数据集中
语法:
datasetName.filter(filterExp{,rootGroupExp})
参数说明:
filterExp 过滤条件
rootGroupExp 是否root数据集表达式
返回值:
返回行
示例:
例1:ds1.filter(name=="1")
返回数据集ds1中记录的name字段是"1"的所有行
例2:ds.filter(score>90)
从数据集ds1中检索出成绩大于90的记录
函数说明:
从数据集中按顺序检索到符合过滤条件的第一条记录,返回该行,注意该函数不能返回具体值,函数只能用在附加数据集中
语法:
datasetName.filter1(filterExp{,rootGroupExp})
参数说明:
filterExp 过滤条件
rootGroupExp 是否root数据集表达式
返回值:
返回行
特别说明:
当对数据集运用过滤条件后确定只剩一条记录时,虽然filter
的运算结果一样,但是filter1运算效率高,因为他只要找到符合条件的记录,
就不继续检索了,而filter要检索完所有的记录才返回。
示例:
例1:ds1.filter1(name=="1")
返回数据集ds1中第一条记录的name字段是"1"的行
例2:ds1.filter1(score>90)
从数据集ds1中检索出成绩大于90的记录