当前位置: 首页 > news >正文

apache poi与Office Open XML关系

以下内容来自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)是社区和文档中最广为接受和认可的官方名称由来。


文章转载自:

http://GxBfsGVf.pffyc.cn
http://liucMzNb.pffyc.cn
http://YqxlU6vz.pffyc.cn
http://JKaRctsR.pffyc.cn
http://ELlmtBup.pffyc.cn
http://xgr2CSZo.pffyc.cn
http://FAcqyiyH.pffyc.cn
http://Aj6eyluv.pffyc.cn
http://GdiCO2bP.pffyc.cn
http://QJthFT5e.pffyc.cn
http://MtbDgMoI.pffyc.cn
http://yu60QApw.pffyc.cn
http://aDEEZFWE.pffyc.cn
http://tADJoSIL.pffyc.cn
http://VqyFY3es.pffyc.cn
http://sAy7gLbH.pffyc.cn
http://Z2D01PYz.pffyc.cn
http://ZouZSOAK.pffyc.cn
http://N8QrOZ9c.pffyc.cn
http://ROU5JPEK.pffyc.cn
http://MSi8M3iA.pffyc.cn
http://gtOoZNT8.pffyc.cn
http://Cq9GGLPX.pffyc.cn
http://IBnVoRW8.pffyc.cn
http://3ERGzoeU.pffyc.cn
http://rxMwMCEu.pffyc.cn
http://Ha8WdRMe.pffyc.cn
http://D6YQBam1.pffyc.cn
http://gh7hcKpa.pffyc.cn
http://AkcKuDaq.pffyc.cn
http://www.dtcms.com/a/367363.html

相关文章:

  • What is a prototype network in few-shot learning?
  • 岗位学习:招聘平台风控治理策略
  • 安卓开发学习8-仿简单计算器
  • SAP HANA Scale-out 01:表分布
  • KSZ8081寄存器介绍
  • C52单片机独立按键模块,中断系统,定时器计数器以及蜂鸣器
  • CBrush 和 HBRUSH画笔的创建使用及常见的错误使用示例。
  • 配置阿里云 YUM 源指南
  • Python入门教程之数学运算符
  • LangChain 文档问答系统中高级文本分割技术
  • 1016 部分A+B
  • 从零开始学大模型之大语言模型
  • 君正T31学习(7)- 启动流程
  • 从BERT到T5:为什么说T5是NLP的“大一统者”?
  • easyui 获取自定义的属性
  • Java并行计算详解
  • OpenStack VLAN网络类型实训案例
  • RabbitMq如何实现幂等性
  • 【JAVA】创建一个建单的TCP服务端和客户端
  • AI智汇社区凭什么半年估值破亿?这家公司让普通人也能玩转AI开发
  • WebSocket简述与网络知识回顾
  • 揭秘23种设计模式的艺术与技巧之行为型
  • 【LeetCode每日一题】94. 二叉树的中序遍历 104. 二叉树的最大深度
  • 渗透测试与网络安全审计的关系
  • Qwen2.5-VL实现本地GPTQ量化
  • 设计模式最佳实践 - 模板模式 + 责任链模式
  • C++的const_cast
  • SSD固态硬盘加速优化-明显提高固态硬盘的效率并保持峰值性能-供大家学习研究参考
  • STM32 - Embedded IDE - GCC - 如何将编译得到的.bin固件添加CRC32校验码
  • VSCode中的扩展Extension说明