Mail Merge šablona z Mustache syntaxe

Aspose.Words umožňuje vytvářet šablony se syntaxí mustache kromě známých šablon. Mustache je alternativní varianta syntaxe šablony, která se skládá z názvů značek uzavřených objektem modelu, který obsahuje data pro šablonu, a je podpořen objektem modelu.

Syntaxe Mustache je jedinou možností, kterou lze použít u šablon, které neobsahují pole, například šablony HTML a TXT. U šablon Word máte dvě možnosti buď použít pole, nebo syntaxi Mustache.

Syntaxe Mustache podporuje značku foreach, což je alternativa pro použití Mail Merge s regiony. Výhodou je, že můžete použít syntaxi mustache, Pokud z nějakého důvodu nejste schopni nebo jednoduše nechcete používat slučovací pole a slučovací oblasti.

Můžete také kombinovat pole Mail Merge s některými dalšími poli pomocí značky foreach, Jak je znázorněno na obrázku níže.

mustache_syntax_aspose_words_java

Vytvořte šablonu Mustache

Prvním důležitým bodem, který je třeba objasnit, je, že Mustache není šablonovací motor. Mustache je další varianta syntaxe, která je k dispozici pro jakoukoli šablonu v load format podporované Aspose.Words. Proto můžete takovou šablonu vytvořit programově i prostřednictvím rozhraní, stačí zahrnout určitou syntaxi a vyhovět specifikaci Mustache.

Předpokládejme, že musíte poslat stejný e-mail 50 příjemcům, abyste si přizpůsobili pozdrav odpovídajícími křestními jmény. Křestní jméno příjemce můžete nahradit nějakým zástupným symbolem jako následující:

Dear {{FirstName}}

I hereby…

Otázka zde: jak můžete vytvořit 50 e-mailů z 1 jediné šablony Mustache? Chcete-li na to odpovědět, musíte provést Mail Merge s regiony, abyste vyplnili složené závorky pro zástupné symboly v šabloně skutečnými daty a vygenerovali výstupní dokument.

mustache_template_aspose_words_java

Práce se syntaxí Mustache

Mustache je reprezentován jako řád bez logiky, protože postrádá jakékoli specifické příkazy řídicího toku, jako jsou for smyčky a if a else podmínky. Ale můžete použít sekci tagy zpracování seznamů a lambda k dosažení podmíněného vyhodnocení a opakování. Chcete-li tedy zahrnout syntaxi Mustache do operace Mail Merge, budete muset použít vlastnost UseNonMergeFields a nastavit její hodnotu na True.

Následující příklad kódu ukazuje, jak nahradit značky Mustache konkrétními daty:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Load a document
Document doc = new Document(dataDir + "Test.docx");
// Loop through each row and fill it with data
DataTable dataTable = new DataTable("list");
dataTable.getColumns().add("Number");
for (int i = 0; i < 10; i++)
{
DataRow datarow = dataTable.newRow();
dataTable.getRows().add(datarow);
datarow.set("Number " + i, i);
}
// Activate performing a mail merge operation into additional field types
doc.getMailMerge().setUseNonMergeFields(true);
doc.getMailMerge().executeWithRegions(dataTable);
doc.save(dataDir + "MailMerge.Mustache.docx");

Rozdíl mezi dokumentem si můžete všimnout před provedením Mail Merge s regiony spolu s použitím vlastnosti UseNonMergeFields:

mustache_syntax_aspose_words_java

A po použití Mail Merge s regiony:

mustache_syntax_result_aspose_words_java

Pomocí polí IF Vytvořte Mail Merge inteligentní

Aspose.Words umožňuje používat pole Mail Merge a značky Mustache s příkazem IF. Pole IF lze použít v jakémkoli dokumentu Mail Merge k potlačení nežádoucích mezer a čárek, pokud je pole prázdné.

Vzorec pole IF je uveden níže:

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

Zde může být podmínkou buď slučovací pole, nebo značka Mustache.

Pole IF můžete například použít, pokud potřebujete vložit “jeho”, “její”, " on “nebo” ona " v závislosti na pohlaví jako následující:

{ IF { MERGEFIELD Gender } = “MALE” “true text” “false text”}

{ IF “{{ GENDER }}” = “MALE” “true text” “false text”}

Následující příklad kódu ukazuje, jak provést operaci Mail Merge se značkami Mustache a poli IF:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Open a template document.
Document doc = new Document(dataDir + "UseOfifelseMustacheSyntax.docx");
doc.getMailMerge().setUseNonMergeFields(true);
doc.getMailMerge().execute(new String[]{"GENDER"}, new Object[]{"MALE"});
// Save the output document.
doc.save(dataDir + "MailMergeUsingMustacheSyntaxifelse_out.docx");

Rozdíl mezi dokumentem si můžete všimnout před použitím vlastnosti UseNonMergeFields:

mustache_if_field_aspose_words_java

A po použití vlastnosti UseNonMergeFields:

mustache_if_field_2_aspose_words_java