Python 在MS Word文档中以编程方式复制和粘贴XML节点?

Python 在MS Word文档中以编程方式复制和粘贴XML节点?,python,xml,ms-word,mailmerge,python-docx,Python,Xml,Ms Word,Mailmerge,Python Docx,我试图根据我掌握的大量变量生成一堆MS Word MergeFeild。环顾四周后,最好的解决方案似乎是打开一个word文档,其中一个Mergefeild作为XML文件,找到该字段并复制它,然后替换新变量名中的文本。现在我被复制粘贴部分卡住了,我将在一段时间内处理替换部分。请注意,我不想实际运行邮件合并,只是生成一组合并字段 这是我的密码: def check_element_is(element, type_char): word_schema = 'http://schemas.op

我试图根据我掌握的大量变量生成一堆MS Word MergeFeild。环顾四周后,最好的解决方案似乎是打开一个word文档,其中一个Mergefeild作为XML文件,找到该字段并复制它,然后替换新变量名中的文本。现在我被复制粘贴部分卡住了,我将在一段时间内处理替换部分。请注意,我不想实际运行邮件合并,只是生成一组合并字段

这是我的密码:

def check_element_is(element, type_char):
    word_schema = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main'
    return element.tag == '{%s}%s' % (word_schema,type_char)

zfile = zipfile.ZipFile("C:TEST.docx")
# return the xml
filexml = zfile.read("word/document.xml")

my_etree = etree.fromstring(filexml)
etree.tostring(my_etree,pretty_print=True)

for node in my_etree.iter(tag=etree.Element):
    print node
    if check_element_is(node, 'fldSimple'):  ## Finds the Mergefeild node.
        dupe = copy.deepcopy(node)

my_etree.append(dupe)  ## I'd like this directly below the other mergefield node

zout = zipfile.ZipFile("C:Test_OUT.docx", 'w')
zout.writestr('word/document.xml', 'cool')
zout.close()
我的脑子有点发疯了,所以如果我说不出话来,我道歉

主要的灵感来源于:剧本
以及关于堆栈溢出的其他复制/粘贴xml问题。我也玩过python docx,但它似乎不符合要求。

我的大脑也被炸了,所以我不确定这是否有用,但每当我想操作word文件时,我都会使用模块
docx
是的,我听到了。我一直在使用PythonDocx,但找不到任何合并字段功能。但如果归结到这一点,我想我可以使用PythonDocx表功能创建和填充表,这实际上可能是实现这一点的方法……如果文档结构很简单,就使用minidom。否则,可以查看xml文件并找出如何将其作为文本文件进行操作。例如,您可以为mergefields准备document.xml模板和替换字段,然后格式化字符串并将其压缩到docx中。我的大脑也被炸了,所以我不确定这是否有用,但每当我想操作word文件时,我都会使用模块
docx
是的,我听到了。我一直在使用PythonDocx,但找不到任何合并字段功能。但如果归结到这一点,我想我可以使用PythonDocx表功能创建和填充表,这实际上可能是实现这一点的方法……如果文档结构很简单,就使用minidom。否则,可以查看xml文件并找出如何将其作为文本文件进行操作。例如,您可以为mergefields准备document.xml模板和替换字段,然后只格式化字符串并将其压缩到docx中。