【问题标题】:mailmerge: What does 'ValueError: Element is not a child of this node' mean?邮件合并:“ValueError:元素不是该节点的子节点”是什么意思?
【发布时间】:2017-05-30 21:24:07
【问题描述】:

我正在尝试使用docx-mailmerge 在 Python 中填充 Word 文档。一切正常,但是在另一台计算机上使用另一个版本的 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.

这是什么意思?

【问题讨论】:

  • 什么是模板?
  • 一个 Word 文件 (*.docx)
  • 欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您描述的问题。

标签: python docx-mailmerge


【解决方案1】:

您没有给我们任何运行时上下文,但这条消息只是告诉您给定行的对象lmxl.etree 没有称为Element 的属性(数据字段)。 etree 显然存在,但它显然不是预期的类型或结构。树节点可能以某种方式没有完全形成:电子表格单元格是空的,或者具有严重无效的值。

【讨论】:

    【解决方案2】:

    我在使用 docx-mailmerge 时遇到了类似的问题。事实证明,在我的 .docx 文件中,单个合并字段上的大括号不在同一行,因此 mailmerge 无法正确检测到合并字段。

    示例:{ MERGEFIELD Foo                                                                   }

    固定:{ MERGEFIELD Foo }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-08
      • 2015-04-11
      • 2023-03-06
      • 2021-10-02
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 2019-11-08
      相关资源
      最近更新 更多