条件判断函数

条件，非零表示满足条件

条件满足时的返回值

条件未满足时的返回值

见参数
=if(getDay(now())<10, '上旬', if(getDay(now())>=20,'下旬','中旬'))
调用页面的javascript函数
反向调用当前页面的JavaScript函数(“当前页面”是指包容当前控件的页面)

要调用的js函数名

可选, 该js函数的第一个参数

可选, 该js函数的第二个参数，以下以此类推...

由js函数决定
=js('getProd', '1', 'true')<br>当前页面上应该有名为getProd的js函数，例如：<br>function getProd(index, isOpened)<br>{<br>　...<br>　return 1;<br>}
求和

参数数量可任意

数值
=sum(1, 220, sum(22, 33))<br>在Report中，参数可以含有单元名，例如 sum(D4:D9, B5, B7)
数组求和

参数数量可任意，参数的形式是以某个字符分隔的多个数字

和参数类似的形式
分隔符可以是除空格外的任意字符(或字符串)，但必须保持一致
=sumDim("1.1 / 2.1 / 3", "10 / 20 / 30") 返回的将是串"11.1 / 22.1 / 33"<br>在Report中，参数可以含有单元名，例如 sumDim(D4:D9)
求平均值

参数数量可任意

数值
求最大值

参数数量可任意

数值
求最小值

参数数量可任意

数值
求百分比

数字

可选, 小数位数，默认为0

百分比串，带'%'符号
=percent(0.12345, 2)，返回值为串“12.35%”
绝对值

数字

正数
四舍五入

数字

小数位数

数值
取整

数字

整数
求余数

被除数

除数

余数
小于n(参数)的最大整数

数字

整数
大于n(参数)的最小整数

数字

整数
平方根

数字

数值
e的n次幂

数字

数值
log

数字

数值
以10为底的log
数值
n(参数)的n次方

底数

幂数

数值
随机数
0 - 0.99
取串长度(字数)

串

数值
=len('字符串12')，返回值5
取串的左n个字

串

字数

串
取串的右n个字

串

字数

串
取串的中间若干个字

串

位置(从0开始)

字数

串
取子串在串中的位置

串

子串

可选, 开始查找位置，默认为0

可选, 大小写是否敏感，默认为0(即不敏感)

位置，从0开始，-1表示未找到
串是否以某子串结尾

串

子串

可选, 大小写是否敏感，默认为0(即不敏感)

1/0, 表示是/否
比较2个串

串1

串2

可选, 大小写是否敏感，默认为0(即不敏感)

整数，0表示相等；大于0表示串1大于串2；小于0表示串1小于串2
替换串的中间若干个字

串

位置(从0开始)

长度

替换的串

被替换后的串
替换串的中某些子串

串

需要被替换的串

替换的新串

被替换后的串
=replaceAll('ABCA', 'A', '02')，返回值为串“02BC02”
把串中的英文转换为小写

串

串
把串中的英文转换为大写

串

串
除去串的首尾空格、或任意串

串

可选，要除去的串，默认空格

串
除去串的左侧空格、或任意串

串

可选，要除去的串，默认空格

串
除去串的尾部空格、或任意串

串

可选，要除去的串，默认空格

串
对文字进行URI编码

串

串
encodeURI不会对数字、字母和“-_.!~*'()”进行编码，也不会对有特殊含义的“;/?:@=+$,#&”进行编码
=encodeURI('http://www.supcan.cn/supcan?val=硕正RIA')，返回值为串“http://www.supcan.cn/supcan?val=%e7%a1%95%e6%ad%a3RIA”
对更多文字进行URI编码

串

串
和encodeURI的唯一差别是：会对有特殊含义的“;/?:@=+$,#&”进行编码
=encodeURIComponent('硕正RIA')，返回值为串“%e7%a1%95%e6%ad%a3RIA”
英文数字

数字

串
=englishNum(10123.24)，返回值为串“ten thousand one hundred and twenty three point twenty four”
中文大写

0至9之间的数字，允许有多个数字

1 表示普通的中文大写，0或忽略该参数表示中文金额的大写

串
=chineseNum(123) 返回值为串“壹贰叁”; =chineseNum(123, 1) 返回值为串“一二三”
人民币大写

数字

串
=rmb(10123.24)，返回值为串“壹万零壹佰贰拾叁元贰角肆分”
按指定掩码表示日期

日期串

掩码，如'YYYY.MM.DD hh:mm:ss'、'YY年度'.<br> 上面的Y、M、D、h、m、s为掩码保留字，次序位置无规定，其含义说明如下：<br> Y - 年，YYYY表示4位显示, YY表示显示后2位;<br> M - 月，MM表示2位显示，不足2位的左侧以'0'填补;<br> D - 日，DD表示2位显示，不足2位的左侧以'0'填补;<br> Month(或Mon) - 英文的月份;<br> Month.(或Mon.) - 英文的月份缩写;<br> Day - 英文的星期;<br> Day. - 英文的星期缩写;<br> h - 小时，hh表示2位显示，不足2位的左侧以'0'填补;<br> m - 分钟，mm表示2位显示，不足2位的左侧以'0'填补;<br> s - 秒，ss表示2位显示，不足2位的左侧以'0'填补;<br>

串
=formatdate(now(), 'YYYY年MM月DD日')，返回值例如“2010年08月05日”<br> =formatdate(now(), 'YYYY年M月D日')，返回值例如“2010年8月15日”<br> =formatdate(now(), 'D, Month YYYY, day')，返回值例如“15, August 2010, Sunday”
按指定掩码表示数值

数值

掩码，如'#,##0.00'、'共：#.00# 吨'. 掩码中'0'表示固定位、'#'表示任意位、','表示千位符.

=formatNum(12345.6, '#,##0.00')，返回“12,345.60”;<br> =formatNum(0, '#.#')，返回空串;<br> =formatNum(0, '#,##0.00')，返回"0.00";<br> =formatNum(123456, '编码 00 - 00 - 00 - 00')，返回"编码 00 - 12 - 34 - 56";<br> =formatNum(1234.5678, '00.00')，返回"34.56";<br>
最常用的掩码为"#,##0.00"，表示小数始终显示2位、整数部分任意但至少有1位、且以千位符分隔.
串
中文的日期表示

日期串

可选, 掩码，默认是'YYYY年MM月DD日'

串
中国银行的日期表示

日期串

格式，默认是'YYYY年MM月DD日'

串
=chineseBankDate(now())，返回值例如“贰零壹零年零捌月壹拾伍日”
2个日期的年度之差

日期1

日期2

数值
2个日期的月份之差

日期1

日期2

数值
=dateDifMonths('2010.1.19', '2010.12.21')，返回11
2个日期的天数之差

日期1

日期2

数值
2个日期的小时之差

日期1

日期2

数值
2个日期的分钟数之差

日期1

日期2

数值
日期增加若干年

日期

数字

新的日期
日期增加若干月

日期

数字

新的日期
日期增加若干天

日期

数字

新的日期
日期增加若干小时

日期

数字

新的日期
日期增加若干分钟

日期

数字

新的日期
取某日期的年度

日期

数值
取某日期的月份

日期

数值
取某日期的日期号

日期

数值
取某日期时间型串的小时

日期

数值
取某日期时间型串的分钟

日期

数值
取当前日期

可选, 格式掩码，默认是'%Y.%m.%d %H:%M:%S'，掩码含义如下(注意大小写)：<br> %Y - 4位数字的年;<br> %y - 2位数字的年;<br> %m - 月份(01至12);<br> %d - 月中的某日(01至31);<br> %H - 小时(24小时制，00至23);<br> %I - 小时(12小时制，01至12);<br> %M - 分钟(00至59);<br> %S - 秒钟(00至59);<br> %p - AM/PM表示上午/下午;<br> %x - 日期的英文普遍写法;<br> %X - 时间的英文普遍写法;<br> %c - 日期时间的英文普遍写法;<br> %b - 月份的英文缩写;<br> %B - 月份的英文全称;<br> %a - 星期的英文缩写;<br> %A - 星期的英文全称;<br> %w - 数字表示的星期(0至6, 0是星期天);<br> %j - 相对于1月1日的日期差(001至366);<br> %Z - 和GMT(或UTC)时区的时差;<br> 选项：<br> /Z - 转换为GMT(或UTC)时间;<br>

日期串
以北京时间2011.1.20 08:00:00为例:<br>now("%Y.%m.%dT%H:%M:%S%Z")将显示为 2011.01.20T08:00:00+08:00<br>now("%Y.%m.%dT%H:%M:%SZ/Z")将显示为 2011.01.20T00:00:00Z
比较2个日期大小

日期1

日期2

1、0或-1，分别表示大于、等于或小于
取得某日期的月初日期

日期

日期
取得某日期的季初日期

日期

日期
假如今天是2012.9.5， firstDateOfSeason(now( )) 将返回 “2012.7.1 00:00:00”
取得某日期的年初日期

日期

日期
假如今天是2012.9.5， firstDateOfYear(now( )) 将返回 “2012.1.1 00:00:00”
取得某日期的月末日期

日期

日期
取得某日期的季末日期

日期

日期
假如今天是2012.8.5， lastDateOfSeason(now( )) 将返回 “2012.9.30 23:59:59”
取得某日期的年末日期

日期

日期
假如今天是2012.8.5， lastDateOfYear(now( )) 将返回 “2012.12.31 23:59:59”
判断某单元格内容是否为null

列名，如果为串"data", 则表示自己(当前列)

1/0 - 是/否
1.仅用于Treelist的表达式中;<br> 2.参数必须以引号围绕，例如 isNull('price')，否则将无法计算;<br> 3.参数可以带 @origin 宏，表示取原始数据，例如 isNull('price@origin');<br> 4.只支持数值型、日期型的列，对string列无效;<br> 5.本函数一般用于需要精确判断 0 或 null 的特定场合，在大多数情况下，直接用 price==0 判断即可，比如表达式: if(price==0, '未输入', data), 不管price的值为0或为null, 等式 "price==0" 均是成立的;<br>
例一.列的属性定义: displayMask="if(isNull('price'), '未输入', data)"<br> 例二.执行js过滤： var s = AF.func("FindAll", "isNull('price')");
单元格引用函数(仅用于Supcan Report)

行号

列号

可选, 工作表序号(从1开始计数), 默认是当前工作表

单元格内容
为了方便，允许直接用单元名(如B3、C8)代替本函数
=ref(3,2)，等同于 =B3<br>=ref(3,2,1)，等同于=B3@sheet1<br>=sum(ref(1,2,3,4,5))，等同于=sum(B1:D3@sheet5)<br>注："@sheet"的含义请参见下面的“宏”
从其它报表引用数据(仅用于Supcan Report)

行号

列号

其它报表的绝对URL或相对URL(相对于当前页面)

可选, 工作表序号(从1开始计数), 默认第一张工作表

可选, 1 表示该表加载后需要先经过计算处理，默认是 0

单元格内容
=ref(3,2, "../reports/reportfin2.xml", 8, 1); 表示从"../reports/reportfin2.xml"报表的第八个工作表取数，报表是需要先计算的.
引用某别名的单元格(仅用于Supcan Report)

别名

可选, 工作表序号(从1开始计数), 默认是当前工作表

可选, 其它报表的绝对URL或相对URL(相对于当前页面)

可选, 1 表示该表加载后需要先经过计算处理，默认是 0

单元格内容
参数2、3的次序可以互换
=refAlias('price'), 等同于=@Aliasprice<br>=refAlias('price', 2), 等同于=@Aliasprice@sheet2<br>=refAlias('price', 1, "../reports/reportfin2.xml");<br>注："@Alias"、"@sheet"的含义请参见下面的“宏”
按条件求sum(仅用于Supcan Report)

以冒号分隔的单元格区域

条件表达式

值
条件表达式的写法比较灵活，里面可以内嵌函数、引用别的单元格，比如:<br> <b>"data > 100"</b>, 变量 data 表示单元格的数据，也可以和Excel那样，简写成 "> 100";<br> <b>"data >= 100 + A5"</b>, A5是单元格名，表示引用该单元格数据;<br>
=sumif(A2:B20, ">200"); //对A2到B20区域内，数值大于200的内容求和<br> =sumif(A2:B20, "data>K20 and data!=K21"); //对A2到B20区域内，数值大于K20单元格数据、且不等于K21单元格的内容求和<br>
按条件求sum(仅用于Supcan Report)

以冒号分隔的单元格区域，供条件判断用

条件表达式，参见 语法一 中的备注

以冒号分隔的单元格区域，数据区

值
=sumif(A2:A20, ">200", B2:B20); //A2到A20区域内，数值大于200的内容，对B2:B20对应内容求和<br> =sumif(A2:A20, "left(data, 2)='CA'", B2:B20); //以“CA”开头的单元格(A2到A20区域内容是字符串)，对应到B2:B20区域内容求和<br> =sumif(A2:@A2, "left(data, 2)='CA'", B2:@B2); //和上例同，只是区域是数据源的填入区
当前打印页(仅用于Supcan Report)
页码，从1开始
请参见demo页：15.分类汇总
总共打印页(仅用于Supcan Report)
总页数
请参见demo页：15.分类汇总
在批打印中的当前打印页(仅用于Supcan Report)
页码，从1开始
顺序填入数据源中的数据行(仅用于Report组件)

数据源名, 如果是XML类型的临时数据源，还可以在斜杠"\"后跟随XML节点名

可选, 可跟随多个参数, 具体的参数由数据源规定

=dataRow('ds1'); //表示在此处开始填入'ds1'数据源的数据<br> =dataRow('ds1\\node1'); //表示在此处开始填入'ds1'XML数据源中node1节点的数据
填入数据源的标题行(仅用于Report组件)

数据源名, 如果是XML类型的临时数据源，还可以在斜杠"\"后跟随XML节点名

可选, 可跟随多个参数, 具体的参数由数据源规定

=headRow('ds1')，表示本行从本单元格开始填入'ds1'数据源的列标题
取得数据源中的单个数据(仅用于Report组件)

数据源名, 如果是XML类型的临时数据源，还可以在斜杠"\"后跟随XML节点名

行号(从1开始计数)

列号或列名

可选, 可跟随多个参数, 具体的参数由数据源规定

数据源中的数据
=data('ds1', 1, 'price')，表示本单元格(或本文本框)填入'ds1'数据源第一行、price列的数据
取得数据源的单个标题(仅用于Report组件)

数据源名, 如果是XML类型的临时数据源，还可以在斜杠"\"后跟随XML节点名

列号或列名

可选, 可跟随多个参数, 具体的参数由数据源规定

标题串
取得数据源总行数(仅用于Report组件)

数据源名, 如果是XML类型的临时数据源，还可以在斜杠"\"后跟随XML节点名

可选, 可跟随多个参数, 具体的参数由数据源规定

数字
填入数据源中的行号(仅用于Report组件)
备注：同一行中，应该有包含dataRow( )函数的单元格
请参见demo页：26.从HTML Table数据源取数(2)