apache poi与Office Open XML关系

发布于:2025-09-07 ⋅ 阅读:(21) ⋅ 点赞:(0)

以下内容来自AI

https://ecma-international.org/publications-and-standards/standards/ecma-376/

官方规范

https://poi.apache.org/components/oxml4j/index.html

java中针对Office Open XML的实现

Apache poi中各个组件

https://poi.apache.org/components/index.html

组件缩写

主要处理格式 核心 Maven Artifact ID (依赖)

英文全称

中文含义与解释

核心作用

POIFS

OLE2 文件系统 (所有二进制格式的基础) poi

Poor ​Obfuscation ​Implementation ​File ​System

简陋混淆实现文件系统 (一个幽默的名字)
POI 最底层核心,用于处理微软OLE2复合文档格式(.doc, .xls等文件的基础结构)。

所有操作二进制Office文档的基础组件

HPSF

OLE2 文档属性(如标题、作者等) poi

Horrible ​Property ​Set ​Format

糟糕的属性集格式
用于从OLE2文档(如.doc, .xls)中提取摘要信息(属性),如标题、作者、主题等。

读取文档元数据

HSSF

Excel 97-2003 格式 (.xls) poi

Horrible ​Spreadsheet ​Stream ​Format

糟糕的电子表格流格式 (另一个幽默的名字)
用于处理Excel 97-2003格式(.xls)。

读写旧版.xls文件

HWPF

Word 97-2003 格式 (.doc) poi-scratchpad

Horrible ​Word ​Processor ​Format

糟糕的文字处理器格式
用于处理Word 97-2003格式(.doc)。

读写旧版.doc文件

HSLF

PowerPoint 97-2003 格式 (.ppt) poi-scratchpad

Horrible ​Slide ​Layout ​Format

糟糕的幻灯片布局格式
用于处理PowerPoint 97-2003格式(.ppt)。

读写旧版.ppt文件

HDGF

Visio 97-2003 格式 (.vsd) poi-scratchpad

Horrible ​Diagram ​Format

糟糕的图表格式
用于处理Visio 97-2003格式(.vsd)。

读取旧版.vsd文件

HPBF

Publisher 格式 (.pub) poi-scratchpad

Horrible ​Publisher ​Format

糟糕的发布者格式
用于处理Publisher格式(.pub)。

读取.pub文件

HMEF

TNEF (Transport Neutral Encoding Format) 格式

Horrible ​Mail ​Encapsulation ​Format

糟糕的邮件封装格式
用于处理Outlook的TNEF格式(传输中性封装格式,常见于winmail.dat附件)。

解码Outlook富文本邮件附件

HSMF

Outlook 邮件格式 (.msg) poi-scratchpad

Horrible ​Stupid ​Mail ​Format

糟糕的愚蠢邮件格式
用于处理Outlook邮件格式(.msg)。

读取.msg文件

XSSF

Excel 2007+ OOXML 格式 (.xlsx) poi-ooxml

XML ​Spreadsheet ​Stream ​Format

XML电子表格流格式
用于处理Excel 2007及以后基于OOXML的格式(.xlsx)。

读写新版.xlsx文件

XWPF

Word 2007+ OOXML 格式 (.docx) poi-ooxml

XML ​Word ​Processor ​Format

XML文字处理器格式
用于处理Word 2007及以后基于OOXML的格式(.docx)。

读写新版.docx文件

XSLF

PowerPoint 2007+ OOXML 格式 (.pptx) poi-ooxml

XML ​Slide ​Layout ​Format

XML幻灯片布局格式
用于处理PowerPoint 2007及以后基于OOXML的格式(.pptx)。

读写新版.pptx文件

XDGF

Visio XML 格式 (.vsdx) poi-ooxml

XML ​Diagram ​Format

XML图表格式
用于处理Visio 2013及以后基于OOXML的格式(.vsdx)。

读写新版.vsdx文件

OOXML(Office Open XML) 格式依赖

poi-ooxml-lite是 Apache POI 项目中的一个依赖库,主要用于处理 Microsoft Office Open XML (OOXML) 格式(如 .docx, .xlsx, .pptx)​核心的、基础的 XML 模式定义(Schemas)​,并在此基础上提供了一些 API 支持。

特性

poi-ooxml-lite

poi-ooxml-schemas (旧版)

主要作用

提供 OOXML 格式核心的、基础的 XML 模式定义(Schemas)​,是正确解析 .xlsx等格式文件所必需的

在 Apache POI ​5.0.0 版本之前,其作用与 poi-ooxml-lite类似,包含了更完整的 OOXML Schemas 定义

出现版本

Apache POI ​5.0.0 及以上版本引入,并逐渐取代 poi-ooxml-schemas

Apache POI ​5.0.0 以下版本中使用

关系

可以看作是 poi-ooxml-schemas轻量版或后续替代品

在旧版本中承担了提供 OOXML Schemas 定义的核心角色

常见冲突

与旧版本的 easypoi(依赖 poi-ooxml-schemas:4.1.1)同时引入时可能发生冲突

与高版本的 Apache POI(使用 poi-ooxml-lite)同时存在时可能发生冲突

为何需要它

OOXML 格式的文件(如 .xlsx)本质是一个 ZIP 压缩包,其中包含了多个遵循特定 XML 模式的文件。poi-ooxml-lite提供了这些核心的 XML 模式定义(Schemas)​。​

。当 Apache POI 读写 OOXML 文件时,需要依据这些模式定义来解析文件结构、验证数据有效性,并将 XML 元素映射到 Java 对象上供开发者操作。因此,它是 poi-ooxml(提供了操作 .xlsx, .docx等文件的高级 API)能够正常工作的基础依赖之一。

从 poi-ooxml-schemas 到 poi-ooxml-lite

在 Apache POI ​5.0.0 版本之前,这个基础角色主要由 poi-ooxml-schemas这个 JAR 包承担。

从 ​5.0.0 版本开始,Apache POI 团队引入了 poi-ooxml-lite来逐步替代 poi-ooxml-schemas。这可能是为了优化依赖结构、减小体积或提高性能。

poi-ooxml-lite是 Apache POI 处理新版 Office 文件格式的基础支撑,提供了核心的 XML 模式定义。它从 POI 5.0.0 开始登台,接手了昔日 poi-ooxml-schemas的工作。在使用时,只需在 Maven 或 Gradle 中引入高版本的 poi-ooxml,构建工具通常会自动处理并传递 poi-ooxml-lite等必要的依赖。主要需留意它与其他依赖了旧版 poi-ooxml-schemas的库可能存在的冲突问题。

通过中央仓库得知poi-ooxml-schemas,最新版本为Feb 14, 2020发布的4.1.2。

通过中央仓库得知poi-ooxml-lite,从5.x版本开始。

poi-ooxml是OOXML 格式规范的实现。

poi 5.x版本之前,poi-ooxml的规范对应了poi-ooxml-schemas。

poi 5.x版本开始,poi-ooxml的规范对应了poi-ooxml-lite。

核心规律与总结


​命名幽默感​:Apache POI 的开发团队用 ​Horrible (糟糕的)​​ 一词作为许多组件的前缀,这是一种自嘲的幽默,暗示处理微软复杂的二进制格式是一件非常“可怕”的任务。


​缩写规则​:

H​ 开头:代表处理旧的、二进制的 ​OLE2​ 格式(如 .xls, .doc, .ppt)。
​X​ 开头:代表处理新的、基于 ​XML​ 的 ​OOXML​ 格式(如 .xlsx, .docx, .pptx)。对应2007版,对应的文件修改文件后缀为zip,然后解压后即可看到对应的xml文件。

中间字母代表文档类型:
​SS​ - Spreadsheet (电子表格,Excel)
​WP​ - Word Processor (文字处理器,Word)
​SL​ - Slide Layout (幻灯片布局,PowerPoint)
​DG​ - Diagram (图表,Visio)
​PB​ - Publisher (出版商,Microsoft Publisher)
​SM​ / ​ME​ - Stupid Mail / Mail Encapsulation (邮件,Outlook)

​F​ 结尾:通常代表 ​Format​ (格式)。

Apache POI 的名称 "POI" 主要有两种由来说法,都挺有意思的:

1.​官方幽默自嘲(主流说法)​​

"POI" 是 "​Poor ​Obfuscation ​Implementation" 的缩写,翻译过来是“糟糕的模糊实现”或“可怜的混淆实现”。这个名称的由来是,Apache POI 项目最初是通过对 Microsoft Office 复杂的文件格式进行反向工程开发的。开发者们发现这些文件格式的设计似乎有意让人难以理解(Obfuscated),但最终还是被他们成功破解了,于是用这个名称带点幽默和自嘲地调侃了一下这个过程。

2.​夏威夷美食(轻松解读)​​

另一种说法认为 "POI" 指的是夏威夷的一种传统食物(波伊,一种用芋头制成的糊状食物)。这种解释更为轻松,为项目名称增添了一些文化色彩。

目前,第一种说法(Poor Obfuscation Implementation)是社区和文档中最广为接受和认可的官方名称由来。


网站公告

今日签到

点亮在社区的每一天
去签到