2015-05-01 51 views
0

我正在使用Aspose.Words來執行MailMerge。但合併後的合併領域,它顯示錯誤!文檔本身的條件爲的未知操作碼。此錯誤可能是由於錯誤地形成合並字段。但我的要求是通過代碼來檢測/捕獲這樣的錯誤。因爲在我們的情況下,用戶自己創建單詞模板並上傳到系統中。我寫了非常簡單的代碼來讀取郵件合併。錯誤!未知的操作碼爲條件

doc.MailMerge.Execute(this.DataSource.Rows[rowIndex]; 

我們可以在代碼中檢測到這樣的錯誤嗎?我試圖在網上找到,但沒有用處可以找到。

+0

在InnerException中是否有任何細節?如果您發佈示例Word文檔來重現問題,這將會很有幫助。 –

+0

它不引發任何異常並完成合並。但是代替不合格的合併字段,它正在被上面的錯誤信息所取代。 – Nps

+0

我想知道,如果我能趕上這樣的例外/錯誤。 – Nps

回答

1

在這種情況下不會引發異常,但可以在合併後使用字段結果捕獲。嘗試下面的示例代碼

// Load the document 
Aspose.Words.Document doc = new Aspose.Words.Document(src); 
// Do processing and mail merge etc 

// Select all field start nodes so we can find the merge fields. 
NodeCollection fieldStarts = doc.GetChildNodes(NodeType.FieldStart, true); 
foreach (FieldStart fieldStart in fieldStarts) 
{ 
    // Get the next sibling 
    Run fieldResult = (Run)fieldStart.NextSibling; 

    // Match the error code with the result 
    if (fieldResult.NextSibling.NextSibling.GetText().Equals("Error! Unknown op code for conditional.", StringComparison.CurrentCultureIgnoreCase)) 
    { 
     // Find the page number, where the field is present 
     LayoutCollector collector = new LayoutCollector(doc); 
     int pageNumber = collector.GetStartPageIndex(fieldStart); 
     Console.WriteLine("Error in field at Page: " + pageNumber + ". Field text: " + fieldResult.GetText()); 
    } 
} 
+0

我認爲在合併期間發生字段更新時發生問題。 {IF << Primary_address_state >>「,」「」}導致以上錯誤。數據源中的字段不爲空。我們可以確定哪個字段塊導致了這個錯誤。 – Nps

+0

if條件爲您提供對文檔中字段的引用。你可以找出它所在的頁碼。查看更新後的答案。 –

+0

感謝您的解決方法。我會在這個問題上打開ASPOSE的門票。 – Nps