用户指南 > 关于用户指南 > Word 和 Excel 模板 > Excel 模板 > 高级脚本标记以及 Groovy 和 Velocity 脚本
高级脚本标记以及 Groovy 和 Velocity 脚本
尽管大多数情况下,简单的特性访问和 JEXL 表达式可能足够,但在某些情况下,可能需要更强大的脚本或模板才行。
在这些情况下,Excel 导出中可以包含可执行 Velocity 脚本的更高级标记。
高级标记如下:
标记名称
说明
cb:script
使用默认脚本语言 Velocity 执行模板,并将
结果放入单元格中。
cb:groovy
对 Groovy 模板进行求值计算,并将结果放入单元格中。
cb:velocity
执行 Velocity 模板,并将结果放入单元格中。
例如,如果项名称为 “my bug”,则 <cb:groovy>Groovy name:${item.name}</cb:groovy> 标记会将单元格设置为 if
Groovy name:my bug
<cb:groovy template="false" silent="false"> email = item.submitter.email; domainR
在本示例中,域名是从事项的电子邮件地址中提取的。如果提交者为 [email protected],则脚本会向单元格输入 "abccompany"。
* 
以下是脚本的已知限制:
这些 cb:script 标记将使用第 1 个单元格的完整内容作为脚本,即使该部分位于 <cb:script>...</cb:script> 标记外部!
这些标记会忽略并移除所有剩余单元格,即使标记跨多个单元格也是如此
cb:groovy 标记具有一些特殊功能,它可在两种不同模式下运行:作为模板或作为脚本。模板模式意味着脚本的计算结果为 Groovy 简单模板 ,其主要特性如下:
模板正在生成字符串输出 (不是日期或数字)。
可使用 ${bean.property} 表示法访问 Bean 特性。
模板内声明的新变量为局部变量,这意味着,完成模板评估时这些变量将丢失。
示例:
<cb:groovy>Hello ${world}</cb:groovy>
另一方面,Groovy 模板可在脚本模式下运行。这意味着,脚本文本的计算结果为某个 Groovy 代码。例如:
<cb:groovy template="false" silent="false">item.submittedAt</cb:groovy>
与模板模式不同之处在于:
变量和 bean 特性使用简单点 (bean.property) 表示法进行访问,不需要周围的 ${...} 文本。
脚本中声明的任何变量以后都将作为范围内的 bean 提供。例如:
<cb:groovy template="false">email = item.submitter.email</cb:groovy>
将在范围内创建电子邮件 bean,后续可在 Excel 文档中的其他位置作为 ${email} 使用。
默认情况下,脚本不会生成任何输出,这意味着,它不会向单元格写入任何内容。但是,如果设置了 silent=false 特性,则脚本的返回值将插入到表单元格中。这意味着,它可以返回日期对象或数字,如本示例,单元格将包含日期数据。
这对您有帮助吗?