以下内容来自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 |
简陋混淆实现文件系统 (一个幽默的名字) |
所有操作二进制Office文档的基础组件 |
HPSF |
OLE2 文档属性(如标题、作者等) | poi | Horrible Property Set Format |
糟糕的属性集格式 |
读取文档元数据 |
HSSF |
Excel 97-2003 格式 (.xls) | poi | Horrible Spreadsheet Stream Format |
糟糕的电子表格流格式 (另一个幽默的名字) |
读写旧版.xls文件 |
HWPF |
Word 97-2003 格式 (.doc) | poi-scratchpad | Horrible Word Processor Format |
糟糕的文字处理器格式 |
读写旧版.doc文件 |
HSLF |
PowerPoint 97-2003 格式 (.ppt) | poi-scratchpad | Horrible Slide Layout Format |
糟糕的幻灯片布局格式 |
读写旧版.ppt文件 |
HDGF |
Visio 97-2003 格式 (.vsd) | poi-scratchpad | Horrible Diagram Format |
糟糕的图表格式 |
读取旧版.vsd文件 |
HPBF |
Publisher 格式 (.pub) | poi-scratchpad | Horrible Publisher Format |
糟糕的发布者格式 |
读取.pub文件 |
HMEF |
TNEF (Transport Neutral Encoding Format) 格式 | Horrible Mail Encapsulation Format |
糟糕的邮件封装格式 |
解码Outlook富文本邮件附件 |
|
HSMF |
Outlook 邮件格式 (.msg) | poi-scratchpad | Horrible Stupid Mail Format |
糟糕的愚蠢邮件格式 |
读取.msg文件 |
XSSF |
Excel 2007+ OOXML 格式 (.xlsx) | poi-ooxml | XML Spreadsheet Stream Format |
XML电子表格流格式 |
读写新版.xlsx文件 |
XWPF |
Word 2007+ OOXML 格式 (.docx) | poi-ooxml | XML Word Processor Format |
XML文字处理器格式 |
读写新版.docx文件 |
XSLF |
PowerPoint 2007+ OOXML 格式 (.pptx) | poi-ooxml | XML Slide Layout Format |
XML幻灯片布局格式 |
读写新版.pptx文件 |
XDGF |
Visio XML 格式 (.vsdx) | poi-ooxml | XML Diagram Format |
XML图表格式 |
读写新版.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),是正确解析 |
在 Apache POI 5.0.0 版本之前,其作用与 |
出现版本 |
Apache POI 5.0.0 及以上版本引入,并逐渐取代 |
Apache POI 5.0.0 以下版本中使用 。 |
关系 |
可以看作是 |
在旧版本中承担了提供 OOXML Schemas 定义的核心角色 。 |
常见冲突 |
与旧版本的 |
与高版本的 Apache POI(使用 |
为何需要它
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)是社区和文档中最广为接受和认可的官方名称由来。