2012-08-13 83 views
2

當您打開Word時,它允許您保存爲Word Open XML格式。我已經看到有關打開docx文件作爲zip文件,然後從那裏提取的東西的帖子。但我真正想要的是將docx轉換爲單個XML的方式,就像在MS Office中執行「另存爲」操作時一樣。該怎麼辦?如何將Doc/Docx自動轉換爲單個XML文件?

以及如何爲.doc格式執行此操作?

注:我想以編程方式做到這一點。最好在Linux開發條件下使用PHP。但是,如果這不可用,那麼其他語言將會這樣做。最後,如果涉及到它,我可以考慮啓動一個Windows服務器來做到這一點。

回答

1

In Word:文件|另存爲| Word XML文檔(* .xml)爲您提供所需的Open XML格式,作爲單個XML文件

在使用Interop的代碼中:使用Document對象的SaveAs方法,使用WdSaveFormat.wdFormatXMLDocument作爲保存格式。您還應該使用Document.Convert方法更新與安裝的MS Office版本的兼容性。

所以,不一定是一個完整的演示,但是這應該給你正確的觀念:

ActiveDocument.Convert(); 

WdSaveFormat myNewSaveFormat = WdSaveFormat.wdFormatXMLDocument; 
ActiveDocument.SaveAs(newFilePath, myNewSaveFormat); //where newFilePath can be a FileInfo object specifying the new file name and extension (docx) 
+1

有沒有辦法做到這一點沒有interop?例如,作爲docx的zip包 - 它是否具有某種模式,可用於合併與單一文件XML完全相同的內容? – samxli 2012-08-13 15:21:50

+0

對不起,它被標記爲office-interop,所以我假設。另外,不確定您是否能夠在服務器場景中使用Interop,可能需要檢查其他線程。 ||這聽起來像是你想要每個構成一個WordprocessingDocument對象的包/零件,但是它們都在一個統一的包/零件中。 – JohnZaj 2012-08-13 21:40:29

+0

謝謝你。我試圖使用wdFormatOpenDocumentText來保存一個.docx文件,並得到一個COM異常。 – GrandMasterFlush 2012-09-20 10:04:30

3

對不起,以恢復死亡的線程,但我只是找到了DOCX文件的答案。 DOCX文件只是XML文件的ZIP存檔。因此,爲了提取其文件之一的內容,v.gr.字Linux環境下/ document.xml中,你必須運行unzip:

unzip -q -c myfile.docx word/document.xml 

爲了捕捉這個命令的輸出到一個PHP腳本的$ xml變量,可以發出:

$xml = shell_exec ("unzip -q -c myfile.docx word/document.xml"); 

希望這個答案有助於DOCX文件。遲到總比不到好。

對於DOC文件,此方法不起作用。

+0

我想執行此代碼,但它不工作..我錯過了什麼? – Sanuj 2016-09-17 09:55:33

+0

檢查系統上是否存在unzip命令。你正在編寫哪個操作系統? – 2016-09-17 18:41:38

+0

雖然我的實際服務器是Linux,但我在Windows上嘗試。 但是我使用了ZipArchieve,所以我的問題現在已經解決了,關於這個代碼我無法在windows上執行。 – Sanuj 2016-09-20 06:25:58