首页 > 解决方案 > 以编程方式修复“Word 在损坏的...中发现不可读的内容”

问题描述

我正在从另一个系统获取 OpenXml 生成的 docx 文件。当尝试在我的应用程序中使用打开文件时Microsoft.Office.Interop.Word.Application.Open(filename)出现The file appears to be corrupted异常。

当我手动打开 docx 文件时,我会收到一个Word found unreadable content in corrupt xxx.docx. Do you want to recover the contents of this document? If you trust the source of this document, click Yes.提示。当我单击Yes时,它能够在一个新的未保存的 Word 文件中恢复文档。

我尝试将之前的损坏的docx 文件的document.xml 与recovered.docx 文件的document.xml 进行比较。虽然两个 document.xml 之间有许多格式更改(关闭 xml 标记之间的额外空间),但主要区别在于 AltChunk 实际上嵌入到了恢复的.docx 中,并且有几个空的“运行”标记被删除。我不确定是什么导致文件被认为是损坏的,因为它们看起来不应该。

也就是说,当我通过我的应用程序以编程方式单击Yes该提示时,有没有办法运行发生的任何过程?...Do you want to recover the contents of this document?...这将是理想的吗?不太理想的是,有没有办法告诉 xml 的哪些部分实际上在 word doc 中被破坏了?

标签: .netms-wordopenxmloffice-interop

解决方案


也就是说,有没有办法运行当我单击“是”时发生的任何过程...您要恢复此文档的内容吗?...通过我的应用程序以编程方式提示;这将是理想的吗?不太理想的是,有没有办法告诉 xml 的哪些部分实际上在 word doc 中被破坏了?

  1. 不,那不是暴露在外面的
  2. 理论上,验证是可能的。但考虑到涉及 AltChunk,这可能不会出现问题。在 Word 处理文档之前,AltChunk 的内容不会被集成,此时它会被集成。如果即将发生的事情“破坏”了某些东西,那么验证将不会接受它。

在这种特殊情况下,我可能会尝试手动删除 AltChunk(这些片段位于 zip 文件中的几个位置)并查看文件是否可以在没有它的情况下打开。但是,如果您对 Word Open XML zip 包不是很熟悉,最好询问文档的制作者/来源。


推荐阅读