报表中使用三目运算

在填报表中,有时候需要对报表中的数据进行一些加减乘除的运算,然后将得到的值显示在某个单元格中。另外,对于一些特殊情况,可能就需要判断并惊醒计算了,如A1B1是两个单元格,当A1/B1的时候,由于B1是分母,那么B1是不能为零的。因为在单元格中用一个非零的自然数除以零的时候,该单元格的内容就会显示成:Infinity。那么这个时候就需控制单元格的显示值了,即当分母为零的时候,让单元格的内容显示成零或者直接显示成空。

这个时候就需要用到三目运算了。下面举例说明一下:

新建一张普通的填报表:

其中B1是可写的,并且C1的自动计算表达式为:${B1}==null || ${B1}==0? 0 :${A1}/${B1}

这样写的目的是为了判断当B1中的值为零的时候,C1中的值就直接显示为零,不进行计算。因为在除法运算中分母为零是不合理的。

页面预览效果如下:

在初始化页面的时候就将自动计算的表达式解析,并将计算出来的值显示在了网页上。当改变B1中的值的时候,依然可以自动计算,如将10改成0

一般情况下,当B1的值为0的时候,11/0在页面上应该显示成:Infinity。但是由于在自动计算中通过三目表达式进行了一个判断,所以当B10的时候,C1中显示的是0.

扩展:

在行式填报表中,有时候客户希望在初始化报表的时候就触发自动计算(注意:行式填报表在初始化的时候并不触发自动计算的表达式,需要在页面上改变单元格值之后才触发),并且,在页面上修改值之后也马上进行自动计算。实现这种效果,可进行如下设置:
举例说明一下,首先设计一张报表:

注意:由于无法使用$,{}等符号,那么就没办法对扩展出来的单元格进行自动计算。只能单独去设置自动计算。

A1-A4有初始值,并且是不可填写的,B1-B4有初始值,并且是可写的,C1-C4是可写的,并且设置了自动计算表达式,分别是:

C1:B1==null || B1==0 ? 0:A1/B1

C2:B2==null || B2==0 ? 0:A2/B2

C3:B3==null || B3==0 ? 0:A3/B3

C4:B4==null || B4==0 ? 0:A4/B4

另外,分别设置C1-C4的显示值的表达式为:

C1: if(B1==null || B1==0,”0″,A1/B1)

C2: if(B2==null || B2==0,”0″,A2/B2)

C3: if(B3==null || B3==0,”0″,A3/B3)

C4: if(B4==null || B4==0,”0″,A4/B4)

在网页上浏览效果如下:

说明:如果在C1-C4中不写:A1/B1之类的表达式,那么报表在初始化的时候就不会计算A1/B1了。报表初始化的时候,C列中计算的是单元格中的“=A1/B1″,当改变网页上的值之后,计算的是自动计算中的”A1/B1.