2015-05-01 26 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