OOXML是微软自Office 2007起采用的基于XML和ZIP的开放文档标准,.docx/.xlsx/.pptx等文件实为含结构化XML与资源的ZIP包,符合ISO/IEC 29500国际标准。

Office Open XML(简称 OOXML)是微软从 Office 2007 开始采用的默认文档格式标准,它不是某种“新软件”,而是一套基于 XML 和 ZIP 技术的开放文件规范。简单说,你现在用 Word 打开的 .docx、Excel 里的 .xlsx、PowerPoint 的 .pptx,本质上都是 OOXML 格式的文件。
OOXML 是怎么组织一个 .docx 或 .xlsx 文件的?
它把整个文档打包成一个 ZIP 压缩包,里面全是结构清晰的 XML 文件和资源(比如图片、字体、样式定义等):
- 根目录下有 [Content_Types].xml,告诉系统“这个包里都有哪些类型的文件”
- 每个部件(如正文、页眉、图表)都对应一个 XML 文件,例如 word/document.xml 存着 Word 的文字内容
- 所有部件之间的关联关系,统一记录在 _rels 文件夹下的 .rels 文件里
- 支持宏的版本(如 .docm、.xlsm)只是在 ZIP 包里额外加了宏代码(VBA)部分,并不改变整体结构
为什么 Office 要用 OOXML 而不是老格式(如 .doc、.xls)?
相比二进制的老格式(.doc/.xls),OOXML 带来几个实在好处:
- 文件体积更小——ZIP 压缩让同样内容的 .docx 比 .doc 小最多 75%
- 损坏恢复更容易——因为内容被拆成多个独立 XML 部件,某一部分出错不影响其他部分读取
- 跨平台兼容性更好——XML 是通用文本,任何能解析 XML 和 ZIP 的程序(包括 Linux 工具、网页脚本、Python 库)都能直接读写
- 便于自动化处理——比如用 Python 的 python-docx 或 openpyxl 修改文档,底层就是操作这些 XML 文件
OOXML 和国际标准有什么关系?
它不是微软私有格式,而是公开标准:
- 2006 年成为 ECMA 标准,编号 ECMA-376
- 2008 年通过 ISO/IEC 表决,正式成为国际标准 ISO/IEC 29500
- 规范分三大部分:WordprocessingML(文字)、SpreadsheetML(表格)、PresentationML(演示),还有 DrawingML 等支撑模块
- 允许嵌入自定义 XML 数据,方便企业系统对接(比如把订单号、审批流信息直接存进 .xlsx 文件里)
基本上就这些。你日常点开的 .docx 文件,背后就是一个结构分明、可查可改、不怕丢数据的 ZIP+XML 组合体。










