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

时间:2017-01-28 00:05:27

标签: python xml ms-word mailmerge python-docx

我试图根据我的一系列变量生成一堆MS Word Mergefeild。环顾四周后,看起来最好的解决方案是打开一个包含一个Mergefeild作为XML文件的word文档,找到该字段并复制它,然后替换新变量名中的文本。现在我被困在复制粘贴部分,并将稍微处理替换部分。请注意我不想实际运行邮件合并,只需生成一堆合并域。

这是我的代码:

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()

我的思绪有点油腻,所以如果我没有意义,我会道歉。

主要灵感来自:docx_mailmerge.py脚本 以及关于堆栈溢出的其他复制/粘贴xml问题。我也玩过python-docx,但它似乎不适合这个账单。

0 个答案:

没有答案