嵌入表达式
我们已经知道,Excel报表模板采用"[内容]"格式来引用数据,采用"<表达式>"格式来计算表达式。
通常
表达式自身也会引用数据,例如以下格式中的"[编号]"表示引用编号列的数据:
<"编号:" & [编号]>
反过来,我们也可以在"[内容]"这种格式中嵌入表达式 ,需要注意的是,嵌入表达式的格式为"<*表达式*>",而不是"<表达式>"。
示例一
下面的格式可以直接统计订单表中产品为PD01的销售数量:
[$订单,Sum(数量),产品 = 'PD01']
如果要统计的产品不是固定的,而是存储在Var变量tp中,一些用户可能会如下设置格式:
[$订单,Sum(数量),"产品 = '" & [!tp] & "'"]
这样的格式是不对的,常规格式中嵌入的表达式,要用符号"<*"和"*>"括起来,所以正确的格式为:
[$订单,Sum(数量),<*"产品 = '" & [!tp] & "'"*>]
实际上,常规格式的任何一部分,都可以用嵌入表达式来动态合成。
示例二
假定表中有一名为“姓名”的列,用于输入员工姓名,如张三、李四、王五等等。
在项目文件夹的Images目录下,有员工的照片文件,如: 张三.bmp、李四.bmp、王五.bmp
如果要在Excel报表中打印员工照片,由于员工表没有照片列,无法以引用图片列的方法实现。
所以只能采用引用图片文件的方式来打印员工照片。
我们知道,引用图片文件的格式为:[&&文件名]。
但是这里的文件名不是固定的,需要根据员工姓名来合成。
我们可以用下面的格式来打印员工照片:
[<*"&&" & [姓名] & ".bmp"*>]
上面的格式中,嵌入了一个表达式:"&&" & [姓名] & ".bmp"
假定姓名是“张三”,在求出表达式的值后,整个格式变为:
[&&张三.bmp]
也就是直接引用图片文件“张三.bmp”。