Mustache语法中的Mail Merge模板

除了熟悉的模板之外,Aspose.Words还允许您使用mustache语法创建模板。 Mustache是模板语法的另一种变体,它由包含模板数据的模型对象所括的标记名称组成。

Mustache语法是与不包含字段的模板(如HTML和TXT模板)一起使用的唯一选项。 对于Word模板,您有两个选项可以使用字段或Mustache语法。

Mustache语法支持foreach标记,这是将Mail Merge与区域一起使用的替代方法。 所以好处是,如果由于某种原因你不能或者只是你不想使用合并字段和合并区域,你可以使用mustache语法。

您还可以使用foreach标记将Mail Merge字段与一些其他字段组合在一起,如下图所示。

mustache_syntax_aspose_words_java

创建Mustache模板

要澄清的第一个要点是Mustache不是模板引擎。 Mustache是另一种语法变体,可用于Aspose.Words支持的加载格式中的任何模板。 因此,您可以以编程方式和通过接口创建这样的模板,您只需要包含某些语法并符合Mustache规范。

假设您需要向50个收件人发送相同的电子邮件,以便使用相应的名字个性化问候语。 您可以用一些占位符替换收件人的名字,如下所示:

Dear {{FirstName}}

I hereby…

这里的问题:如何从1个Mustache模板创建50封电子邮件? 要回答这个问题,您需要执行带有区域的Mail Merge,以使用实际数据填充模板中占位符的花括号并生成输出文档。

mustache_template_aspose_words_java

使用Mustache语法

Mustache表示为无逻辑顺序,因为它缺少任何特定的控制流语句,如for循环和ifelse条件。 但是您可以使用section tags processing lists和lambdas来实现条件求值和循环。 因此,要在Mail Merge操作中包含Mustache语法,您需要使用UseNonMergeFields属性并将其值设置为True

下面的代码示例演示如何用特定数据替换Mustache标记:

在执行带有区域的Mail Merge以及应用UseNonMergeFields属性之前,您可以注意到文档之间的差异:

mustache_syntax_aspose_words_java

在应用带有区域的Mail Merge之后:

mustache_syntax_result_aspose_words_java

使用IF字段使Mail Merge智能

Aspose.Words允许您将Mail Merge字段和Mustache标记与IF语句一起使用。 IF字段可以在任何Mail Merge文档中使用,以在字段为空时抑制不需要的空格和逗号。

IF字段公式如下所示:

{ IF [Condition] [Display Result 1] [Display Result 2] }

这里,条件可以是合并字段或Mustache标记。

例如,如果需要根据性别插入"his",“her”,“he"或"she”,则可以使用IF字段如下所示:

{ IF { MERGEFIELD Gender } = “MALE” “真文本” “假文本”}

{ IF “{{ GENDER }}” = “MALE” “真文本” “假文本”}

下面的代码示例演示如何使用Mustache标记和IF字段执行Mail Merge操作:

在应用UseNonMergeFields属性之前,您可以注意到文档之间的差异:

mustache_if_field_aspose_words_java

并在应用UseNonMergeFields属性后:

mustache_if_field_2_aspose_words_java