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領域を追加するには、2つの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クラスを使用して、テンプレート内のテキストと段落の書式を変更することもできます。 差し込み項目の前後に挿入するテキストは、FieldMergeFieldクラスに含まれるTextBeforeプロパティとTextAfterプロパティを使用して処理できます。
次のコード例は、mail merge操作中にチェックボックスまたはHTMLを挿入する方法を示しています:
//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ドキュメントの記事