mailmerge: Что означает "ValueError: Элемент не является потомком этого узла"?

Я пытаюсь заполнить документ Word в Python с помощью docx-mailmerge. Все работало нормально, но после некоторого редактирования дома на другом компьютере с другой версией Word мой скрипт выдает ошибку в строке:

document = MailMerge(template) 

Ошибка:

document = MailMerge(template)

File "C:\Python27\lib\site-packages\mailmerge.py", line 79, in __init__
parent.remove(child)
File "src\lxml\lxml.etree.pyx", line 950, in lxml.etree._Element.remove 
(src\lxml\lxml.etree.c:50327)
ValueError: Element is not a child of this node.

Что это значит?

2 ответа

Решение

Вы не дали нам никакого контекста времени выполнения, но это сообщение просто сообщает вам, что объект lmxl.etree в данной строке не имеет названного атрибута (поля данных) Element, etree по-видимому, существует, но, очевидно, не имеет ожидаемого типа или структуры. Возможно, узел дерева каким-то образом не сформирован полностью: ячейка электронной таблицы пуста или имеет серьезно недопустимое значение.

У меня была аналогичная проблема с docx-mailmerge. Оказалось, что в моем файле .docx фигурные скобки в одном поле слияния не находились в одной строке, поэтому mailmerge не мог правильно определить поле слияния.

Пример: { MERGEFIELD Foo                                                                   }

Исправлено: { MERGEFIELD Foo }

Другие вопросы по тегам