2017-04-26 61 views
1

我一直在考慮用大量以.xml格式的Word文檔的一系列文件夾。它們每個都包含一些VBA代碼,但所有代碼都已經運行,所以我不需要保留這些代碼。如何將XML Word文檔轉換爲DOCX?

我需要打印每個文件夾中的所有文件,但由於網絡上XML文件的限制,我無法簡單地從Windows資源管理器批量打印它們,所以我需要將它們轉換爲.docx(或.doc)。

我該如何去做這件事?

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

這讓:我使用python-DOCX嘗試一個簡單的Python腳本

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

我猜這是因爲Python-的docx並不意味着打開.xml文件,但這是一個相當沒有教養的猜測。四處搜尋這個錯誤,我能找到的所有問題都是它沒有正確安裝(據我所知),或使用.doc文件而不是.docx。

我,我只是使用python-DOCX不正確?如果沒有,我是否應該使用更適合的包裝或技術?

+0

當文件不是有效的或空的docx文件,那種異常被拋出 – Ludisposed

回答

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文件,只能讀取和寫入它們。

+0

這是有道理的,不知道爲什麼我沒有想到用VBA的。這是我將不得不半定期做一些事情,所以有得心應手地對付它的腳本是當務之急,如果我可以管理它,雖然此批最後我扔什麼可怕與'pyautogui'開起來打印每個文件。不過,等效的VBA腳本希望能夠運行得更好。 非常感謝您的幫助:) – mazjin