Apache POI
Apache 软件基金会的 Java 库,用来读写 Excel、Word、PowerPoint 等微软 Office 文件,开发者做报表导出、文档解析时常用。
Apache POI 是 Apache 软件基金会下的一个 Java 库,解决的是「程序里怎么读写 Office 文件」这件事。后端要导出 xlsx 报表、批量生成 docx 合同、从上传的 pptx 里抽文字,都可以直接调它的接口,不用装 Office,也不用调外部服务。它把 OOXML 和老的 OLE2 二进制格式都包了一层,开发者面对的是 Workbook、Sheet、Cell 这类对象。
主要功能
项目按文件格式拆成几个组件:poi-ooxml 处理 xlsx、docx、pptx 这类新格式,poi-scratchpad 负责 doc、xls、ppt 等旧格式,还能读 Outlook 的 TNEF 附件。除了读写单元格和段落,它也支持文本提取、文档加密,以及针对不可信文件的 secure processing 选项。XMLBeans 作为子项目维护,poi-ooxml 依赖它解析 OOXML 的 XML 结构。
适合谁
主要是 Java 后端和工具开发者。典型场景是服务端生成对账表、把用户上传的表格解析入库、做文档内容检索。它不面向普通用户,没有图形界面,得写代码调用;非 Java 技术栈的项目一般会找对应的替代库。
版本与限制
2026 年 10 月发布 6.0.0,从这一版起要求 Java 17 或更新版本,老项目升级前要先确认 JDK。源码仓库 2025 年 7 月从 Subversion 迁到了 Git,托管在 GitHub。历史上出过若干安全公告,比如 5.4.0 之前的 poi-ooxml 对重名 zip 条目校验不足,poi-scratchpad 5.2.0 之前解析特制 TNEF 文件可能内存溢出;处理用户上传的文件时,建议用较新版本并开启安全处理。