2

我正在努力寻找损坏的 docx 文件的原因。

似乎有数以百万计的工具可用于修复损坏的文件 - 我尝试了 5 种工具,它们都修复得很好,但没有一个给出任何错误来源的迹象。

有人知道吗?

开源将是一个奖励。

谢谢。

更新:

我尝试使用 frankpl 推荐的 Open XML SDK 2.0 Productivity Tool。它看起来很有希望,但它拒绝单独打开我的损坏文件或与另一个文件进行比较。

我发现文件的 [Content_Types].xml 部分之间存在差异,但靠近一点,只是顺序不同 - 我认为这不会导致腐败?

在有效(由 Word 修复)文件中:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
    <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
    <Default Extension="xml" ContentType="application/xml"/>
    <Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/>
    <Override PartName="/word/numbering.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml"/>
    <Override PartName="/word/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"/>
    <Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>
    <Override PartName="/word/stylesWithEffects.xml" ContentType="application/vnd.ms-word.stylesWithEffects+xml"/>
    <Override PartName="/word/settings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml"/>
    <Override PartName="/word/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>
    <Override PartName="/word/fontTable.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml"/>
    <Override PartName="/word/webSettings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml"/>
    <Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>
</Types>

在损坏的文件中:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
    <Default Extension="xml" ContentType="application/xml"/>
    <Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
    <Override PartName="/word/document.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/>
    <Override PartName="/word/numbering.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml"/>
    <Override PartName="/word/styles.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml"/>
    <Override PartName="/word/stylesWithEffects.xml" ContentType="application/vnd.ms-word.stylesWithEffects+xml"/>
    <Override PartName="/word/settings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml"/>
    <Override PartName="/word/webSettings.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml"/>
    <Override PartName="/word/fontTable.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml"/>
    <Override PartName="/word/theme/theme1.xml" ContentType="application/vnd.openxmlformats-officedocument.theme+xml"/>
    <Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlformats-package.core-properties+xml"/>
    <Override PartName="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"/>
</Types>
4

4 回答 4

0

不是 docx 修复工具,但适用于 Microsoft Office 的Open XML SDK 2.0包含一个名为“适用于 Microsoft Office 的 Open XML SDK 2.0 Productivity Tool”的工具,您可以使用它来比较两个 docx 文件(如损坏的文件和工作文件)。

于 2013-08-13T17:41:36.563 回答
0

我知道的老问题,但只是对任何有类似问题的人说。

上述内容文件不会成为问题的根源。(订单不是问题,它只是修复时的单词 - 重新编号和重新排序)

可能导致损坏的事情只是在 zip 中包含不属于那里的额外文件。

大多数情况下,当它举手并没有给您任何提示时,是结构元数据出了问题。

我的意思是,不是指向 document.xml 中关系 id 的无效指针(例如),而是无效的关系文件本身。例如,指向 document.xml.rels 中不在 [Content_Types].xml 中的内容类型。

但是,当 word 修复所有内容时,它会重新编号所有它的 id(和重新排序),因此比较工具很困难。

检查文件列表是否相同,专注于诸如 [Content_Types].xml 和 document.xml.rels(以及其他 rels 文件)之类的内容,祝你好运!

于 2015-01-06T17:35:16.060 回答
0

晚了很多年,但您可以使用以下方法创建自己的错误检查器DocumentFormat.OpenXml.Validationhttps ://msdn.microsoft.com/en-us/library/office/bb497334.aspx

于 2016-06-21T15:14:41.773 回答