如何自动将Doc / Docx转换为单个XML文件?

时间:2012-08-13 10:09:22

标签: xml ms-office openxml office-interop docx

当您打开Word时,它允许您保存为Word Open XML格式。我见过有关将docx文件作为zip打开然后从那里提取内容的帖子。但我真正想要的是一种将docx转换为单个XML的方法,就像在MS Office中执行“另存为”操作一样。怎么办?

如何为.doc格式执行此操作?

注意:我想以编程方式执行此操作。最好在Linux开发条件下使用PHP。但如果没有,那么其他语言就可以。最后,如果归结为它,我可以考虑启动Windows服务器来执行此操作。

3 个答案:

答案 0 :(得分:4)

很抱歉复活死线程,但我刚刚找到了DOCX文件的答案。 DOCX文件只是XML文件的ZIP存档。因此,为了提取其中一个文件的内容,v.gr。在Linux环境下的word / document.xml,你必须运行解压缩:

NullReferenceException

要将此命令的输出捕获到PHP脚本的$ xml变量中,您可以发出:

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

希望这个答案有助于DOCX文件。迟到总比没有好。

对于DOC文件,此方法不起作用。

答案 1 :(得分:2)

Eric White在transforming-open-xml-documents-to-flat-opc-format

的C#中解释了如何为docx执行此操作

你也可以使用docx4j(我工作),'j'是Java。

答案 2 :(得分:1)

在Word中:文件|另存为Word XML Document(* .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)