@ジョン、
IFieldMergingCallback インターフェイスを実装する必要がある場合があります。イベント ハンドラ 'FieldMerging' を使用して、差し込み印刷プロセスに対するカスタム コントロールを実装できます。たとえば、着信 MergeField の値で「null」または「空の文字列」を確認し、これに基づいて親セルを削除することを決定できます。サンプルコードは次のとおりです。
Document doc = new Document(@"C:\Temp\template.docx");
doc.MailMerge.FieldMergingCallback = new HandleMergeFields();
doc.MailMerge.Execute(new string[] { "a", "b", "c", "d", "e", "f" },
new object[] { "<a>", "<b>", "", "<d>", "<e>", "<f>" });
doc.Save(@"C:\Temp\out.doc");
private class HandleMergeFields : IFieldMergingCallback
{
void IFieldMergingCallback.FieldMerging(FieldMergingArgs args)
{
DocumentBuilder builder = new DocumentBuilder(args.Document);
if (string.IsNullOrEmpty(args.FieldValue.ToString()))
{
Field field = args.Field;
Cell cell = field.Start.GetAncestor(NodeType.Cell) as Cell;
// Remove the MergeField
builder.MoveToMergeField(args.FieldName);
//Remove the Cell
cell.Remove();
}
}
void IFieldMergingCallback.ImageFieldMerging(ImageFieldMergingArgs e)
{
// Do nothing
}
}