In This Topic
Mail Merge is a feature provided by advanced text editors that lets the user create multiple messages based on an input template and a data source. The template contains special placeholders called mail merge fields. The mail merge process creates a message from each data record by filling the mail merge fields with the corresponding values from the data record. This results in a number of messages equal to the number of records in the data source.
Mail Merge Settings
NOV Text Editor provides full support for generating mail merge messages and a wide range of data sources. The information necessary for the mail merge features (data source, field mappings, current data record index, etc.) is stored in an NMailMerge object. You can obtain and modify it through the MailMerge property of the rich text document's document block. The NMailMerge class contains the following properties:
- DataSource - specifies the data source the mail merge should get data from.
- PreviewMailMerge - determines whether the mail merge is in preview or in design mode. When set to true (i.e. the mail merge is in preview mode), the mail merge field values are populated with the data from the currently selected data record.
- CurrentDataRecordIndex - gets/sets the currently selected record index. You can use this property to navigate through the data records.
- DataRecordCount - gets the number of data records in the mail merge's data source.
The following piece of code demonstrates how to switch a rich text document's mail merge to preview mode:
Switch mail merge to preview mode |
Copy Code
|
NDocumentBlock documentBlock = richTextView.Content;
documentBlock.MailMerge.PreviewMailMerge = true;
|
Merge to Single Document
If you want to merge each record with the mail merge template and save the result to a separate page of one large document, you can use the NMergeAndSaveBatch like shown in the following code snippet:
Merge to single document |
Copy Code
|
NMergeAndSaveBatch batch = new NMergeAndSaveBatch();
batch.Execute(richTextView);
|
The batch will show a dialog to let the user select a target file for the merged document and will then perform the mail merge and save the result to that file. Each merged message will be placed on a separate page in the resulting document.
Merge to Multiple Documents
If you want to merge each record with the mail merge template and save the result to a different file, you perform the mail merge manually by navigating to each data record and saving the resulting merged document. Note that if you don't want this navigation to affect the original document, you should clone the rich text view.
The following code example demonstrates how to perform a manual mail merge and save each merged document to a file in a given target folder:
Merge to multiple documents |
Copy Code
|
// Clone the rich text view
NRichTextView clonedRichTextView = (NRichTextView)m_RichText.DeepClone();
// Switch the mail merge of the cloned rich text view to preview mode
NMailMerge mailMerge = clonedRichTextView.Content.MailMerge;
mailMerge.PreviewMailMerge = true;
// Loop through all mail merge records to save individual documents to file
for (int i = 0; i < mailMerge.DataRecordCount; i++)
{
// Move to the next data source record
mailMerge.CurrentDataRecordIndex = i;
// Save the merged document to file
string fileName = "Document" + i.ToString(CultureInfo.InvariantCulture) + ".docx";
clonedRichTextView.SaveToFile(NPath.Combine(targetPath, fileName));
}
|
See Also