Mail Merge Шаблон
Обычно в качестве базового документа для операции Mail Merge используется шаблон слияния, будь то простой Mail Merge или Mail Merge с регионами. Mail merge с регионами является более эффективным и популярным способом, чем простой mail merge. Простой Mail Merge рассматривается как частный случай Mail Merge с регионами, где регион представляет собой весь документ целиком. Более подробно все объясняется в следующей статье “Типы операций Mail Merge”.
Шаблон гарантирует, что текст в выходном объединенном документе отформатирован правильно, а операция Mail Merge гарантирует, что текст из источника данных правильно введен в шаблон объединения.
Aspose.Words предоставляет возможность создать шаблон Mail Merge для определения фиксированного содержимого, а затем сгенерировать документы слияния, используя поля слияния. Таким образом, шаблон слияния будет содержать необходимый текст, который будет одинаковым во всех выходных документах, и поля слияния для заполнения изменяющегося содержимого. В результате информация из указанного источника данных будет добавлена в шаблон объединения через эти поля во время создания объединенного документа.
Что такое шаблон Mail Merge
Шаблон Mail Merge - это персонализированный документ, содержащий фиксированные данные и объединенные поля, в которых вы хотите разместить изменяемый текст. Шаблон слияния может быть в любом формате, поддерживающем поля, например, DOC, DOCX, DOT, DOTX, RTF. Кроме того, вы также можете использовать шаблон mustache, который более подробно описан в статье “Синтаксис шаблона Mustache”.
Вы можете создать шаблон объединения, который будет служить образцом для новых документов, и он должен включать основной текст, который должен быть одинаковым для каждой версии объединяемого документа. Добавление полей объединения в шаблон будет представлять данные персонализации, такие как имена или адреса, которые извлекаются из источника данных. Операция Mail Merge автоматически вставит данные персонализации из вашего источника данных в документ шаблона слияния.
Кроме того, вы можете добавить регион Mail Merge в свой шаблон, вставив два поля mail merge, чтобы отметить начало и конец почтового региона. В следующей статье “Типы операций Mail Merge” это объясняется более подробно.
Создайте шаблон Mail Merge
Вы можете создать шаблон и добавить в него определенные поля слияния, которые будут заменены значениями из источника данных либо вручную, например, с помощью Microsoft Word, либо программно, используя Aspose.Words. В этой статье мы рассмотрим программный способ создания шаблона.
Используйте класс DocumentBuilder, чтобы создать необходимый шаблон слияния с помощью Aspose.Words. Вы можете включить текст, поле для объединения и разрыв строки в такой шаблон, используя методы InsertTextInput, InsetField и InsertParagraph.
В следующем примере кода показано, как создать шаблон mail merge:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
System::SharedPtr<Aspose::Words::Document> CreateMailMergeTemplate() | |
{ | |
auto doc = System::MakeObject<Document>(); | |
auto builder = System::MakeObject<DocumentBuilder>(doc); | |
// Insert a text input field the unique name of this field is "Hello", the other parameters define | |
// what type of FormField it is, the format of the text, the field result and the maximum text length (0 = no limit) | |
builder->InsertTextInput(u"TextInput", TextFormFieldType::Regular, u"", u"Hello", 0); | |
builder->InsertField(uR"(MERGEFIELD CustomerFirstName \* MERGEFORMAT)"); | |
builder->InsertTextInput(u"TextInput1", TextFormFieldType::Regular, u"", u" ", 0); | |
builder->InsertField(uR"(MERGEFIELD CustomerLastName \* MERGEFORMAT)"); | |
builder->InsertTextInput(u"TextInput1", TextFormFieldType::Regular, u"", u" , ", 0); | |
// Inserts a paragraph break into the document | |
builder->InsertParagraph(); | |
// Insert mail body | |
builder->InsertTextInput(u"TextInput", TextFormFieldType::Regular, u"", u"Thanks for purchasing our ", 0); | |
builder->InsertField(uR"(MERGEFIELD ProductName \* MERGEFORMAT)"); | |
builder->InsertTextInput(u"TextInput", TextFormFieldType::Regular, u"", u", please download your Invoice at ", | |
0); | |
builder->InsertField(uR"(MERGEFIELD InvoiceURL \* MERGEFORMAT)"); | |
builder->InsertTextInput(u"TextInput", TextFormFieldType::Regular, u"", | |
u". If you have any questions please call ", 0); | |
builder->InsertField(uR"(MERGEFIELD Supportphone \* MERGEFORMAT)"); | |
builder->InsertTextInput(u"TextInput", TextFormFieldType::Regular, u"", u", or email us at ", 0); | |
builder->InsertField(uR"(MERGEFIELD SupportEmail \* MERGEFORMAT)"); | |
builder->InsertTextInput(u"TextInput", TextFormFieldType::Regular, u"", u".", 0); | |
builder->InsertParagraph(); | |
// Insert mail ending | |
builder->InsertTextInput(u"TextInput", TextFormFieldType::Regular, u"", u"Best regards,", 0); | |
builder->InsertBreak(BreakType::LineBreak); | |
builder->InsertField(uR"(MERGEFIELD EmployeeFullname \* MERGEFORMAT)"); | |
builder->InsertTextInput(u"TextInput1", TextFormFieldType::Regular, u"", u" ", 0); | |
builder->InsertField(uR"(MERGEFIELD EmployeeDepartment \* MERGEFORMAT)"); | |
return doc; | |
} |
На рисунке ниже показан созданный шаблон:

Настройка свойств шаблона Mail Merge
Aspose.Words позволяет настраивать ваш шаблон с помощью множества свойств. Настройка шаблона будет описана ниже на примере настройки некоторых свойств изображений и текста.
Настройка свойств изображения
Вы можете указать свойства изображения, используя класс ImageFieldMergingArgs.
В следующем примере кода показано, как указать имя файла изображения и размер изображения:
For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
void HandleMergeField::ImageFieldMerging(System::SharedPtr<ImageFieldMergingArgs> args) | |
{ | |
args->set_ImageFileName(u"Image.png"); | |
args->get_ImageWidth()->set_Value(200); | |
args->set_ImageHeight(System::MakeObject<MergeFieldImageDimension>(200, MergeFieldImageDimensionUnit::Percent)); | |
} |
Настройка свойств текста
Вы можете использовать свойство Text, чтобы вставить текст в документ для текущего поля слияния. Кроме того, вы можете изменить форматирование текстов и абзацев внутри вашего шаблона, используя классы Font и ParagraphFormat. Вы можете обрабатывать текст, который будет вставлен до или после поля объединения, используя свойства TextBefore и TextAfter, которые включены в класс FieldMergeField.
В следующем примере кода показано, как вставлять флажки или HTML во время операции mail merge:
//For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C | |
auto doc = MakeObject<Document>(MyDir + u"Mail merge destinations - Fax.docx"); | |
// Setup mail merge event handler to do the custom work. | |
doc->get_MailMerge()->set_FieldMergingCallback(MakeObject<WorkingWithFields_::HandleMergeField>()); | |
// Trim trailing and leading whitespaces mail merge values. | |
doc->get_MailMerge()->set_TrimWhitespaces(false); | |
ArrayPtr<String> fieldNames = | |
MakeArray<String>({u"RecipientName", u"SenderName", u"FaxNumber", u"PhoneNumber", u"Subject", u"Body", u"Urgent", u"ForReview", u"PleaseComment"}); | |
ArrayPtr<SharedPtr<System::Object>> fieldValues = MakeArray<SharedPtr<System::Object>>( | |
{System::ObjectExt::Box<String>(u"Josh"), System::ObjectExt::Box<String>(u"Jenny"), System::ObjectExt::Box<String>(u"123456789"), | |
System::ObjectExt::Box<String>(u""), System::ObjectExt::Box<String>(u"Hello"), System::ObjectExt::Box<String>(u"<b>HTML Body Test message 1</b>"), | |
System::ObjectExt::Box<bool>(true), System::ObjectExt::Box<bool>(false), System::ObjectExt::Box<bool>(true)}); | |
doc->get_MailMerge()->Execute(fieldNames, fieldValues); | |
doc->Save(ArtifactsDir + u"WorkingWithFields.MailMergeFormFields.docx"); |
Вы можете скачать примерный файл этого примера с сайта Aspose.Words GitHub.
Вы также можете проверить реализацию класса HandleMergeField
из Aspose.Words GitHub.
Смотрите также
- Для получения более подробной информации о том, как создавать шаблоны в Microsoft Word вручную, ознакомьтесь со статьей Создать шаблон в документации Microsoft