当您打开Word时,它允许您另存为Word Open XML格式。我看到过关于将 docx 文件作为 zip 打开然后从那里提取内容的帖子。但我真正想要的是一种将docx转换为单个XML的方法,就像在MS Office中执行"另存为"操作时一样。怎么办?
以及如何为.doc格式执行此操作?
注意:我想以编程方式执行此操作。 最好在Linux开发条件下使用PHP。但是,如果不可用,那么其他语言就可以了。最后,如果归结为它,我可以考虑启动一个 Windows 服务器来做到这一点。
很抱歉恢复死线程,但我刚刚找到了 DOCX 文件的答案。DOCX文件只是XML文件的ZIP存档。因此,要提取其文件之一的内容,v.gr。word/document.xml在Linux环境下,你必须运行解压缩:
unzip -q -c myfile.docx word/document.xml
要将此命令的输出捕获到 PHP 脚本的 $xml 变量中,您可以发出:
$xml = shell_exec ("unzip -q -c myfile.docx word/document.xml");
希望这个答案对 DOCX 文件有帮助。迟到总比不到好。
对于 DOC 文件,此方法不起作用。
Eric White 解释了如何在 C# 中以转换-open-xml-documents-to-flat-opc-format 的 docx 执行此操作
你也可以使用docx4j(我正在研究它)来做到这一点,"j"是Java。
在 Word 中: 文件 | 另存为 |Word XML 文档 (*.xml) 以单个 XML 文件的形式提供所需的 Open XML 格式
在使用互操作的代码中:使用 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)