Hi there,
How can I avoid removing merge field if field value is null or empty during mail merge operation.
Regards,
Pradeep
Hi there,
How can I avoid removing merge field if field value is null or empty during mail merge operation.
Regards,
Pradeep
Hi Pradeep,
Thanks for your inquiry. In your case, I suggest you following two solutions.
Document doc = new Document(MyDir + "in.docx");
DocumentBuilder builder = new DocumentBuilder(doc);
doc.MailMerge.FieldMergingCallback = new HandleMergeFieldTest();
// Call doc.MailMerge.Execute() OR
// doc.MailMerge. ExecuteWithRegions ()
foreach (Bookmark bookmark in doc.Range.Bookmarks)
{
if (bookmark.Name.StartsWith("BM"))
{
builder.MoveToBookmark(bookmark.Name);
builder.InsertField(@"MERGEFIELD " + bookmark.Name.Substring(2, bookmark.Name.Length - 2) + " \\* MERGEFORMAT");
}
}
doc.Range.Bookmarks.Clear();
doc.Save(MyDir + "Out.docx");
private class HandleMergeFieldTest : IFieldMergingCallback
{
// /
// / This is called when merge field is actually merged with data in the document.
// /
void IFieldMergingCallback.FieldMerging(FieldMergingArgs e)
{
DocumentBuilder builder = new DocumentBuilder(e.Document);
if (e.FieldValue == null || e.FieldValue.ToString().Trim() == "")
{
builder.MoveToMergeField(e.DocumentFieldName, true, false);
builder.StartBookmark("BM" + e.FieldName.Trim());
builder.EndBookmark("BM" + e.FieldName.Trim());
}
}
void IFieldMergingCallback.ImageFieldMerging(ImageFieldMergingArgs e)
{
// Do nothing.
}
}