如何将XML Word文档转换为DOCX?

时间:2017-04-26 09:32:23

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

我收到了一系列包含.xml格式的大量Word文档的文件夹。它们每个都包含一些VBA代码,但所有这些代码都已运行,因此我不需要保留它。

我需要打印每个文件夹中的所有文件,但由于网络上XML文件的限制,我不能简单地从Windows资源管理器中大量打印它们,所以我需要将它们转换为.docx (或.doc)首先。

我该怎么做呢?我使用python-docx尝试了一个简单的python脚本:

import os
from docx import Document
folderPath=<folderpath>
fileNamesList=os.listdir(folderPath)
for xmlFileName in fileNamesList:
    currentDoc=Document(os.path.join(folderPath,xmlFileName))
    docxFileName=xmlFileName.replace('.xml','.docx')
    currentDoc.save(os.path.join(folderPath,docxFileName))
    currentDoc.close()

这给出了:

docx.opc.exceptions.PackageNotFoundError: Package not found at <first file name>.xml

我猜这是因为python-docx并不意味着打开.xml文件,但这是一个非常没有受过教育的猜测。搜索这个错误,我发现的所有问题都是没有正确安装(据我所知)或者使用.doc文件而不是.docx。

我只是错误地使用python-docx吗?如果没有,我应该使用更合适的包装或技术吗?

1 个答案:

答案 0 :(得分:1)

目前还不清楚那些.xml文件是什么类型的文件,但我怀疑它们是我在Word 2003中使用的过渡格式,它是基于XML的,但不是Open Packaging自Word 2007以来Word文档中使用的约定(OPC)格式。

python-docx现在或将来都不会读取这些内容,因此您需要将它们转换为.docx格式或直接解析XML。

如果我有Windows可用,我想我会使用VBA编写一个简短的转换脚本,然后使用.docx处理python-pptx文件。我首先看看Word是否可以加载.xml文件并从那里开始。

您可以找到批量转换的实用程序,但我在快速搜索时找不到任何内容。

如果你感兴趣的是一次性打印,并且Word将加载文件,那么没有转换步骤的VBA脚本可能是一个不错的选择。 python-docx不会打印.docx个文件,只能读取和写入。