了解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规范十分简单:
- 一个Office文件(
.docx
,.pptx
,.xlsx
,.eddx
)就是一个.zip
格式的压缩包 - 压缩包内,以
.xml
文本格式存放文档,以其他格式(.jpg
,.png
等)存放图片等资源。
修复Office文件
Office文件损坏的情况
从上述介绍中可以看出,Open XML格式的文件损坏,无非两种情况:
- 压缩包损坏
- 压缩包内的文件损坏
那么面对Office文件损坏时,思路就是:
- 首先检查压缩包是否损坏。这一步方法很多,这里建议直接用7-zip打开Office文件,然后进行压缩包测试。
- 其次检查压缩包内的文件。一般来讲,资源文件(比如图片)是不太会损坏的,即使损坏也不太会影响Office文件本身。而
.xml
文件是非常容易损坏的,最常见的情况是.xml
语法错误。
案例
我们以一个Visio的.eddx
文件为例,该文件是花一整天时间使用第三方软件绘制的论文配图,但不幸损坏,重新绘制的成本很高。
损坏表现:该文件用第三方打开后出现空白,用Visio打开后也是空白,但文件体积有3MB。
修复:
- 将文件后缀名改为
.zip
, 用7-zip打开。 - 可以看到文件能够正常用7-zip打开。然后用7-zip的压缩包测试功能,测试到zip文件未损坏。
- 逐一检查media下的文件和thumbnail.jpeg文件,将它们恢复出来。
- 检查所有xml文件。排查两点: 一是是否符合xml语法规范,而是是否符合Open XML规范。一般来讲第一点比较容易,第二点需要了解Open XML的语法文档。
将xml文件逐一用语法检查器进行检查。可以用在线的语法检查器,比如 xmllint.com 或者用Edge浏览器打开xml文件也可以。
我们发现pages/page1.xml
文件有损坏的情况:
损坏错误的原因是出现了未配对的XML标签,并且也告诉了我们错误的位置。
定位到那个位置,可以发现它在文件末尾出现了大量空白的标签。<Text> <pp PX="0" CX="0"> <tp CX="1"></> </> </> </> </> </> <> <> < =""/> < =""/> < =""/> < =""/> < =""/> <> < =""/> < =""/> </> <> < ="" ="" =""/> < =""/> </> <> < ="" ="" =""/> < ="" ="" =""/> </> <> < =""/> < ="" ="" =""/> </>
我们可以据此推测这是第三方软件在写入Visio格式时出现了BUG,损坏了用户的文件。请大家在选择第三方软件,尤其是关键的基础软件时,一定要慎重。
删除错误部分,补全XML标签。我们删掉所有空白的标签,然后重新补全XML文件的标签:
<Text> <pp PX="0" CX="0"> <tp CX="1"></tp> </pp> <Text>
- 重新压缩,构建新的Office文件。将修补好的
.xml
文件拖入压缩包的相同位置中,替换损坏的.xml
。然后将.zip
文件重命名未.eddx
文件。 - 打开新的Office文件,并祝自己好运。
我们的运气不错,新的Office文件能够正常打开。只是丢失了少量内容而已。
总结
得益于Open XML文件格式,Office文件的修复不再是专家级别的任务了,如果运气好的话,稍微有一些XML经验的人,也可以尝试修复Office文件了。
参考资料:
- [Open XML 格式和文件扩展名
](https://support.microsoft.com/zh-cn/office/open-xml-%E6%A0%BC...)
本文为原创文章。创作过程中没有使用AI。
本文最初发布于CSDN,SegmentFault等平台。采用 CC BY-NC-SA 4.0 国际 许可协议进行许可。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。