以下內容來自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)是社區和文檔中最廣為接受和認可的官方名稱由來。