### 公共内容

Supcan TreeList和Supcan Report有一些公共的内容，例如表达式，Report中的单元格与单元格之间的逻辑关系、TreeList的列与列之间的逻辑关系都可以用表达式来描述。
Supcan具有完备的表达式高速解析功能、并内置了六十多个常用的计算函数。
1.表达式

Supcan的表达式分二种：关系表达式和格式掩码.
所谓“关系表达式”就是如前所述的单元格与单元格之间的计算关系、列与列之间的计算关系、小计/合计运算逻辑；而“格式掩码”则是单元格用于描述自身显示的特殊的表达式.
Supcan Report的表达式在单元格内直接输入，举例如下:

     //支持函数的多层嵌套
     =sum(203.12, 200.1, min(20, 22) * 20)

     //A3、B4、 B5表示单元格
     =average(A3, B4, if(B5>2, 3, 4))

     //A3至C4的矩形区域内所有单元格
     =sum(A3:C4)

Supcan Treelist的表达式可以在其XML描述文件中直接定义，举例如下:

      //表示p2列与price列的关系
     <express>p2=if(price!=100, price-100, price)</express>

     //total、price、num列的关系
     <express>total=round(price * num, 4)</express>

     //num@origin表示num列的原始数据(和修改后内容无关)
     <express>total2=round(price * num@origin, 4)</express>

格式掩码和关系表达式相比，没有什么大的差别，它还可以包含"textColor="的文字颜色分句，如果是Treelist，还可以有左侧图片、右侧图片分句，举例如下:

     //数字以人民币显示
     =RMB(data)

     //日期型数据以中国银行格式显示
     =ChineseBankDate(data)

     //日期型数据以指定格式显示
     =FormatDate(data, 'DD/MM/YYYY')

     //布尔型数据以“是”/“否”显示
     =if(data, '是', '否')

     //数据乘以1000，然后在后面跟随“吨”(数据本身未变)
     =data *1000 + '吨'

     //textColor=...是文字颜色
     ='$'+data; textColor=if(data>100,'#0000ff', red)

     //Treelist的右侧图片: rightImage，图片URL根据当前行的productID列内容算出：
     ='产品:'+data+ '，图样：'; rightImage=if(productID=1, 'fruit.jpg', if(product=2, '../meta/office.ico', 'ele.png'))

表达式书写规则及说明如下：

1.加、减、乘、除分别以+、-、*、/表示; 2.支持 “>”、 “<”、 “=”(或 “==”)、 “>=”、 “<=”、 “!=”(或 “<>”)比较逻辑运算; 3.支持 “and”(或 “&&”)、 “or”(或 “||”)、 “not”(或 “!”) 这些所谓 "与或非" 的逻辑运算; 4.运算优先级：括号 > 乘除 > 加减 > 比较逻辑运算 > 与或非逻辑运算; 5.与或非运算优先级：非 > 与 > 或; 6.允许数字和串混合计算; 7.支持串的大小比较运算; 8.不支持位运算; 9.纯数字不支持嵌入千位符(,逗号); 10.支持任意级次的函数嵌套, 例如 if(3!=2, if(A1=if(K2<0, 1-K2, K2), 33, abs(K1)), 40); 11.被零除时，返回字符 "∞", 表示无穷大;