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 }