MailMerge.MergeDuplicateRegions property

Gets or sets a value indicating whether all of the document mail merge regions with the name of a data source should be merged while executing of a mail merge with regions against the data source or just the first one.

public bool MergeDuplicateRegions { get; set; }


The default value is false.


Shows how to work with duplicate mail merge regions.

public void MergeDuplicateRegions(bool mergeDuplicateRegions)
    Document doc = CreateSourceDocMergeDuplicateRegions();
    DataTable dataTable = CreateSourceTableMergeDuplicateRegions();

    // If we set the "MergeDuplicateRegions" property to "false", the mail merge will affect the first region,
    // while the MERGEFIELDs of the second one will be left in the pre-merge state.
    // To get both regions merged like that,
    // we would have to execute the mail merge twice on a table of the same name.
    // If we set the "MergeDuplicateRegions" property to "true", the mail merge will affect both regions.
    doc.MailMerge.MergeDuplicateRegions = mergeDuplicateRegions;

    doc.Save(ArtifactsDir + "MailMerge.MergeDuplicateRegions.docx");

/// <summary>
/// Returns a document that contains two duplicate mail merge regions (sharing the same name in the "TableStart/End" tags).
/// </summary>
private static Document CreateSourceDocMergeDuplicateRegions()
    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);

    builder.InsertField(" MERGEFIELD TableStart:MergeRegion");
    builder.InsertField(" MERGEFIELD Column1");
    builder.InsertField(" MERGEFIELD TableEnd:MergeRegion");

    builder.InsertField(" MERGEFIELD TableStart:MergeRegion");
    builder.InsertField(" MERGEFIELD Column2");
    builder.InsertField(" MERGEFIELD TableEnd:MergeRegion");

    return doc;

/// <summary>
/// Creates a data table with one row and two columns.
/// </summary>
private static DataTable CreateSourceTableMergeDuplicateRegions()
    DataTable dataTable = new DataTable("MergeRegion");
    dataTable.Rows.Add(new object[] { "Value 1", "Value 2" });

    return dataTable;

See Also