【问题标题】:Error! Unknown op code for conditional错误!条件的未知操作码
【发布时间】:2015-05-01 23:45:11
【问题描述】:

我正在使用 Aspose.Words 进行 MailMerge。但是在合并字段合并后,它显示 错误!文档本身中条件的未知操作码。此错误可能是由于合并字段格式不正确。但我的要求是通过代码检测/捕获此类错误。因为,在我们的例子中,用户自己创建单词模板并上传到系统中。我编写了非常简单的代码来阅读邮件合并。

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

我们可以在代码中检测到此类错误吗?我试图在网上找到,但找不到有用的东西。

【问题讨论】:

  • InnerException 中有详细信息吗?如果您发布一个示例 Word 文档来重现该问题,将会很有帮助。
  • 它没有抛出任何异常并完成合并。但是代替格式错误的合并字段,它被上面的错误消息替换。
  • 我想知道,如果我能捕捉到这样的异常/错误。
  • 我找不到任何方法让 Aspose 抛出任何异常,但有一种解决方法可以解决这个问题。查看答案中的示例代码

标签: mailmerge aspose.words


【解决方案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());
    }
}

【讨论】:

  • 我认为在合并期间发生字段更新时会出现问题。 {IF> "," ""} 导致上述错误。数据源中的字段不为空。我们能否确定导致此错误的字段块。
  • if 条件为您提供对文档中字段的引用。您可以找到它所在的页码。查看更新的答案。
  • 感谢您的解决方法。我将在这个问题上向 ASPOSE 开票。
猜你喜欢
  • 1970-01-01
  • 2020-02-19
  • 1970-01-01
  • 1970-01-01
  • 2023-02-17
  • 1970-01-01
  • 2017-08-11
  • 2023-02-21
  • 1970-01-01
相关资源
最近更新 更多