Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
You can create different regions in your template to have special areas that you can simply fill with your data. Use the Mail Merge with regions if you want to insert tables, rows with repeating data to make your documents dynamically grow by specifying those regions within your template.
You can create nested (child) regions as well as merge regions. The main advantage of using this type is to dynamically increase parts inside a document. See more details in the next article “Nested Mail Merge with Regions”.
A Mail Merge region is a specific part inside a document that has a start point and an end point. Both points are represented as Mail Merge fields that have specific names “TableStart:XXX” and “TableEnd:XXX”. All content that is included in a Mail Merge region will automatically be repeated for every record in the data source.
Aspose.Words allows you to execute Mail Merge with regions using one of the ExecuteWithRegions methods that accept IMailMergeDataSource custom data source.
The following code example shows how to execute Mail Merge with regions from sqlite database with SQLiteCpp:
You can notice the difference between the document before executing Mail Merge with regions:
And after executing Mail Merge with regions:
There are some important points that you need to consider when performing a Mail Merge with regions:
If one of these rules is broken, you will get unexpected results or an exception may be thrown.
Q: How do I implement a custom IMailMergeDataSource in C++?
A: Create a class that inherits from Aspose::Words::MailMerging::IMailMergeDataSource and implement the required members: GetValue, MoveNext, GetChildDataSource, and GetRecordCount. In GetValue return the field value for the current record, and in MoveNext advance to the next record. Register the data source with MailMerge::ExecuteWithRegions.
Q: Can I use nested mail‑merge regions, and how are they defined?
A: Yes. Define inner regions with their own TableStart:ChildRegion and TableEnd:ChildRegion fields inside the outer region. When executing, the outer region’s data source must provide a child data source (via GetChildDataSource) for each record to populate the inner region.
Q: What happens if the start and end merge fields of a region are not in the same row or cell?
A: Aspose.Words will throw an ArgumentException or produce malformed output because the region boundaries must be within a single row or cell. Ensure both TableStart and TableEnd tags are placed in the same table row or cell.
Q: Do the merge field names have to match the column names in my data source?
A: By default, yes. The field name in the document must exactly match a column name returned by GetValue. If you need different names, use MailMerge::ExecuteWithRegions overload that accepts a field‑mapping dictionary.
Q: Is it possible to use a DataTable directly with ExecuteWithRegions in C++?
A: No. Unlike .NET, the C++ API does not provide a built‑in DataTable implementation. You must wrap your tabular data in a custom class that implements IMailMergeDataSource (or use IMailMergeDataSourceRoot for hierarchical data).
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.