2013-02-05 64 views
0

我使用Aspose和Word進行郵件合併。Word 2007〜Aspose跳過空單元格

我有一個3x2的表作爲在一定條件下但是如下

<a> <b> 
<c> <d> 
<e> <f> 

一個字段可能是空的,如果是這樣的話,我想ommit整個小區 - 即不只是一個空單元格。即

<a> <b> 
<e> <d> 
     <f> 

所以在上面的例子中c是空的,因此不顯示?

可以這樣做嗎?

我試過IF和空白MERGEFIELDS也NextIf。

回答

1

@Jon,

您可能需要實現IFieldMergingCallback接口。事件處理程序'FieldMerging'可用於實現對郵件合併過程的自定義控制。例如,您可以檢查傳入MergeField的值是否爲'null'或'空字符串',然後基於此決定刪除父Cell。以下是示例代碼:

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 
    } 
} 
相關問題