5

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

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

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

4

3 回答 3

10

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

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

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

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

希望这个答案对 DOCX 文件有所帮助。迟到总比不到好。

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

于 2015-07-07T12:56:33.430 回答
3

Eric White 在transforming-open-xml-documents-to-flat-opc-format中解释了如何在 C# 中为 docx 执行此操作

您也可以使用 docx4j(我正在研究)来完成,'j' 是 Java。

于 2012-08-15T05:18:46.057 回答
2

在 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)
于 2012-08-13T12:54:50.857 回答