了解Office的文件格式 —— Open XML 规范

Office文件的格式

Open XML格式,之前称为OOXML,是Office文件格式的标准(自Office 2016开始),如果你看到文件后缀名为x,比如.docx, .pptx, .xlsx, .eddx等,那么它大概率就是Open XML规范的文件格式。
Open XML格式相对于Office之前采用的.doc, .ppt, .xls格式,最大的特点是更易于理解,简单的结构也让它变得容易修复,使得普通人也可以尝试修复损坏的Office文件。

Open XML规范

Open XML规范十分简单:

  1. 一个Office文件(.docx, .pptx, .xlsx, .eddx)就是一个.zip格式的压缩包
  2. 压缩包内,以.xml文本格式存放文档,以其他格式(.jpg, .png等)存放图片等资源。

修复Office文件

Office文件损坏的情况

从上述介绍中可以看出,Open XML格式的文件损坏,无非两种情况:

  1. 压缩包损坏
  2. 压缩包内的文件损坏

那么面对Office文件损坏时,思路就是:

  1. 首先检查压缩包是否损坏。这一步方法很多,这里建议直接用7-zip打开Office文件,然后进行压缩包测试。
  2. 其次检查压缩包内的文件。一般来讲,资源文件(比如图片)是不太会损坏的,即使损坏也不太会影响Office文件本身。而.xml文件是非常容易损坏的,最常见的情况是.xml语法错误。

案例

我们以一个Visio的.eddx文件为例,该文件是花一整天时间使用第三方软件绘制的论文配图,但不幸损坏,重新绘制的成本很高。
损坏表现:该文件用第三方打开后出现空白,用Visio打开后也是空白,但文件体积有3MB。
修复:

  1. 将文件后缀名改为.zip, 用7-zip打开。
  2. 可以看到文件能够正常用7-zip打开。然后用7-zip的压缩包测试功能,测试到zip文件未损坏。
    1.png
  3. 逐一检查media下的文件和thumbnail.jpeg文件,将它们恢复出来。
  4. 检查所有xml文件。排查两点: 一是是否符合xml语法规范,而是是否符合Open XML规范。一般来讲第一点比较容易,第二点需要了解Open XML的语法文档。
  5. 将xml文件逐一用语法检查器进行检查。可以用在线的语法检查器,比如 xmllint.com 或者用Edge浏览器打开xml文件也可以。
    我们发现pages/page1.xml文件有损坏的情况:
    在这里插入图片描述
    损坏错误的原因是出现了未配对的XML标签,并且也告诉了我们错误的位置。
    定位到那个位置,可以发现它在文件末尾出现了大量空白的标签。

                         <Text>
                             <pp PX="0" CX="0">
                                 <tp CX="1"></>
                             </>
                         </>
                     </>
                 </>
             </>
             <>
                 <>
                     < =""/>
                     < =""/>
                     < =""/>
                     < =""/>
                     < =""/>
                     <>
                         < =""/>
                         < =""/>
                     </>
                     <>
                         < ="" ="" =""/>
                         < =""/>
                     </>
                     <>
                         < ="" ="" =""/>
                         < ="" ="" =""/>
                     </>
                     <>
                         < =""/>
                         < ="" ="" =""/>
                     </>
    
    我们可以据此推测这是第三方软件在写入Visio格式时出现了BUG,损坏了用户的文件。请大家在选择第三方软件,尤其是关键的基础软件时,一定要慎重。
  6. 删除错误部分,补全XML标签。我们删掉所有空白的标签,然后重新补全XML文件的标签:

                         <Text>
                             <pp PX="0" CX="0">
                                 <tp CX="1"></tp>
                             </pp>
                         <Text>
  7. 重新压缩,构建新的Office文件。将修补好的.xml文件拖入压缩包的相同位置中,替换损坏的.xml。然后将.zip文件重命名未.eddx文件。
  8. 打开新的Office文件,并祝自己好运。
    我们的运气不错,新的Office文件能够正常打开。只是丢失了少量内容而已。

总结

得益于Open XML文件格式,Office文件的修复不再是专家级别的任务了,如果运气好的话,稍微有一些XML经验的人,也可以尝试修复Office文件了。

参考资料:

  1. [Open XML 格式和文件扩展名
    ](https://support.microsoft.com/zh-cn/office/open-xml-%E6%A0%BC...)
本文为原创文章。创作过程中没有使用AI。
本文最初发布于CSDN,SegmentFault等平台。采用 CC BY-NC-SA 4.0 国际 许可协议进行许可。

Kurukuru
2 声望0 粉丝