【问题标题】:How to convert XML Word Documents to DOCX?如何将 XML Word 文档转换为 DOCX?
【发布时间】:2017-09-23 14:59:45
【问题描述】:

我收到了一系列文件夹,其中包含大量 .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 吗?如果没有,我应该使用更合适的包或技术吗?

【问题讨论】:

  • 当文件不是有效的或空的docx文件时,会抛出这种异常

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


【解决方案1】:

不清楚这些.xml 文件是什么类型的文件,但我怀疑它们是我认为在 Word 2003 中使用的一种过渡格式,它是基于 XML 的,但不是使用的开放打包约定 (OPC) 格式自 Word 2007 以来的 Word 文档中。

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

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

您也许可以找到一个进行批量转换的实用程序,但我在快速搜索中没有找到任何实用程序。

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

【讨论】:

  • 有道理,不知道为什么我没有想到使用 VBA。这是我必须半定期做的事情,所以如果我能管理它,有一个方便的脚本来处理它是当务之急,尽管对于这批我最终把一些可怕的东西和pyautogui 一起扔了打开和打印每个文件。不过,等效的 VBA 脚本有望运行得更好。非常感谢您的帮助:)
猜你喜欢
  • 2015-06-03
  • 2021-10-05
  • 2016-01-02
  • 2018-10-11
  • 2023-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多