Hi<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Thanks for your inquiry. I think that you can try using MergeField event handler in this case. Please see the following code and attached documents:
ArrayList listOfRows = new ArrayList();
public void Test253()
{
//Create some datasource
DataTable myTable = new DataTable("myTable");
myTable.Columns.Add("field1");
myTable.Columns.Add("field2");
myTable.Columns.Add("field3");
for (int i = 0; i < 10; i++)
{
myTable.Rows.Add(new object[] { i.ToString(), "Some data" + i.ToString(), "Some text" + i.ToString() });
}
//perform mailmerge
Document doc = new Document(@"Test253\in.doc");
doc.MailMerge.MergeField += new MergeFieldEventHandler(MailMerge_MergeField_253);
doc.MailMerge.ExecuteWithRegions(myTable);
//create result table
Table mainTable = (listOfRows[0] as Row).ParentTable;
for (int i = 0; i < listOfRows.Count; i++)
{
mainTable.AppendChild((Row)listOfRows[i]);
}
doc.Save(@"Test253\out.doc");
}
void MailMerge_MergeField_253(object sender, MergeFieldEventArgs e)
{
if (e.FieldName == "field1")
{
Table parentTable = (e.Field.Start.GetAncestor(NodeType.Table) as Table);
//Get rows in table
RowCollection rows = parentTable.Rows;
foreach (Row row in rows)
{
listOfRows.Add(row);
}
//Remove empty paragraphs before and after table
parentTable.NextSibling.Remove();
parentTable.PreviousSibling.Remove();
}
}
Hope this helps.
Best regards.