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

 Смежные вопросы

  • Нет связанных вопросов^_^