我正在使用Aspose和Word进行邮件合并。
我有一张3x2的桌子,如下
<a> <b>
<c> <d>
<e> <f>
然而,在某些条件下,一个字段可能是空的,如果是这种情况,我想忽略整个单元格,即不只是一个空单元格。即
<a> <b>
<e> <d>
<f>
那么在上面的例子中c是空的,因此不显示?
这能做到吗?
我尝试过IF和空白MERGEFIELDS以及NextIf。
@Jon,
您可能需要实现IFieldMergingCallback接口。事件处理程序"FieldMerging"可用于实现对邮件合并过程的自定义控制。例如,您可以检查传入MergeField的值是否为"null"或"空字符串",然后基于此决定删除父单元格。这是示例代码:
Document doc = new Document(@"C:Temptemplate.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:Tempout.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
}
}