如何在Word模板文件中嵌入显示数据脚本?

前面我们介绍了 如何编写打印模板的GraphQL脚本,它描述了要从数据库中获取指定对象的哪些记录以及要获取这些记录的哪些字段信息,那么我们如何把这些数据按我们希望的样子打印出来呢?本文将详细为您讲解模板脚本的语法规则。

假设我们前面配置的GraphQL脚本及其返回的数据分别如下所示:

query{
quote {
name
account_id{
name
}
created__label
status__label
related__quote_line_item {
line_number
total_price
has_schedule__label
product_id{
name
}
}
}
}
{
"data": {
"quote": [
{
"name": "TEST",
"account_id": {
"name": "TEST"
},
"created__label": "2020-12-22 10:39",
"status__label": "草稿",
"related__quote_line_item": [
{
"line_number": "0000001",
"total_price": 17500,
"has_schedule__label": "否",
"product_id": {
"name": "P1"
}
}
]
}
]
}
}

变量#

变量是模板脚本的基本元素,模板脚本中可使用的每个变量正好对应到前面提到的GraphQL脚本输出的内容,从对象名称quote开始,输出的每个键名都是一个变量名称,比如name, created__label等。

普通变量#

可以通过变量名直接引用的变量就是普通变量,比如上述提到的name

复合变量#

如果要引用深层次的变量时,需要使用点符号拼接各个路径层变量名称,比如要引用account_id下的name,应该用account_id.name来表示该变量。

__label后缀变量#

有些变量返回值本身是没有可读性的,比如上面的created__label显示为"2020-12-22 10:39"是因为带了后缀__label,请参考 特殊字段显示格式

related__前缀变量#

有些变量名称是以related__为前缀的,它表示这是一个关联子表字段,后面拼接的是要关联到的子表对象名称,它将返回一个数组,请参考 查询关联子表数据

因为related__前缀的变量返回的是数组,所以首先应该通过 循环变量内容 的语法来引用它,又因为它是深层次的数组变量,所以您最终需要的是下面的 嵌套循环变量内容 语法来引用它。

入口变量#

从上述GraphQL接口返回的内容来看,根节点是data,下一层节点是当前打印模板的关联对象名称quote,模板脚本中可引用的根变量是quote而不是dataquote被称为“入口变量”,所有变量都是从这个入口变量开始的,深层变量名需要使用上述提到的 复合变量 语法来引用。

因为入口变量始终返回的是一个数组,所以引用入口变量要使用下面提到的 循环变量内容 语法来引用。

引用变量#

要想在模板脚本中引用变量,必须用一对大括号把变量名称包裹起来,比如{name}表示引用名称为name的变量,除了返回值为数组类型的变量有其特殊语法规则之外,任何变量都需要使用大括号包裹来引用。

循环变量内容#

简单的变量可以直接使用大括号包裹来引用,它将直接输出变量值,但是如果变量返回的是一个数组,那么就需要使用循环变量内容的语法来引用它了。

循环变量内容的语法规则是使用{#变量名称}开头和{/变量名称}结尾,中间被包裹的内容会被循环输出,被包裹的内容中可以直接引用每个数组元素下的变量名称。

比如上面提到的入口变量需要使用如下格式来循环输出每个数组中的内容:

{#quote}
......
报价名称:{name}
客户名称:{account_id.name}
.....
{/quote}

嵌套循环变量内容#

有时返回数组的变量内部可能又月一个返回数组内容的变量,此时我们可以“嵌套循环变量内容”来依次循环这个层次的数组变量,比如上面提到的related__前缀变量是深层次的变量,循环引用该变量内容大致方法如下所示:

{#quote}
......
报价名称:{name}
客户名称:{account_id.name}
.....
{#related__quote_line_item}行项目编号:{line_number}
总价:{total_price}
产品:{product_id.name}
......{/related__quote_line_item}
......
{/quote}
提示

上面行项目编号:前面并没有输入回车符,这是因为循环变量时,其中间被包裹的任何符号都将被循环输出,包括但不限于回车符、制表符、空格等,您可以查看 示例 来了解更多。

嵌入模板脚本到模板文件#

您可以直接在Word模板文件希望显示嵌入数据的位置直接编写对应的模板脚本,打印模板会自动把查询到的相关数据准确地写入到要导出的Word文件中对应的位置。

华炎魔方

华炎魔方基于商业智能和模型驱动,即使是不懂编程的业务人员,也能轻松便捷地创建智能化、移动化的企业应用。

© 2020 华炎软件. 保留所有权利.

开发人员微信群
商务咨询
微信公众号