Apache POI 介绍

Apache POI 介绍

1. 什么是 Apache POI

Apache POI(Poor Obfuscation Implementation)是 Apache 软件基金会提供的一个开源 Java 库,用于操作 Microsoft Office 格式的文件,包括:

  • Excel (.xls.xlsx)
  • Word (.doc.docx)
  • PowerPoint (.ppt.pptx)
  • Outlook (.msg)
  • 其他 Office 文档格式

POI 的核心目标是让 Java 程序可以读、写、修改 Office 文件,而不需要安装 Office 软件。


2. 核心模块

Apache POI 分为多个模块,每个模块针对不同类型的 Office 文件:

模块 功能
HSSF 处理 Excel 97-2003 .xls 文件(基于二进制格式)
XSSF 处理 Excel 2007+ .xlsx 文件(基于 XML 格式)
HWPF 处理 Word 97-2003 .doc 文件
XWPF 处理 Word 2007+ .docx 文件
HSLF 处理 PowerPoint 97-2003 .ppt 文件
XSLF 处理 PowerPoint 2007+ .pptx 文件
POIFS 低层级 API,用于 OLE2 文档(Office 二进制格式)
OOXML 高层级 API,用于处理 Office Open XML 文件(如 .docx, .xlsx

3. 核心功能

  1. Excel 操作

    • 读取/写入单元格数据
    • 设置单元格样式、字体、边框、颜色
    • 合并单元格、创建公式
    • 读取/创建图表和图片
  2. Word 操作

    • 读取/修改文本内容
    • 处理段落、表格、图片
    • 添加页眉/页脚、样式设置
  3. PowerPoint 操作

    • 创建幻灯片
    • 设置文本框、图片、形状
    • 导出为图片
  4. 通用功能

    • 处理 Office 文档的元数据(作者、创建时间、标题等)
    • 操作嵌入对象(如图片、表格)
    • 支持公式计算和日期格式转换

4. 基本示例

Excel 示例(读取 .xlsx 文件)

java 复制代码
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.*;

import java.io.FileInputStream;

public class ExcelReadExample {
    public static void main(String[] args) throws Exception {
        FileInputStream fis = new FileInputStream("example.xlsx");
        Workbook workbook = new XSSFWorkbook(fis);
        Sheet sheet = workbook.getSheetAt(0);

        for (Row row : sheet) {
            for (Cell cell : row) {
                System.out.print(cell.toString() + "\t");
            }
            System.out.println();
        }

        workbook.close();
        fis.close();
    }
}

Excel 示例(写入 .xlsx 文件)

java 复制代码
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.*;

import java.io.FileOutputStream;

public class ExcelWriteExample {
    public static void main(String[] args) throws Exception {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");

        Row row = sheet.createRow(0);
        Cell cell = row.createCell(0);
        cell.setCellValue("Hello Apache POI");

        FileOutputStream fos = new FileOutputStream("output.xlsx");
        workbook.write(fos);
        fos.close();
        workbook.close();
    }
}

5. 注意事项

  • 性能问题 :处理大文件时,HSSF 对 .xls 文件内存占用高,推荐使用 SXSSF (流式写入 .xlsx)。
  • 兼容性:HSSF 只支持老版本 Excel,XSSF 支持新版本。
  • 依赖管理:Apache POI 有多个模块,需要根据需求添加 Maven/Gradle 依赖。
  • 异常处理 :操作文件时要处理 IOExceptionInvalidFormatException

6. 参考资料


Apache POI 是 Java 中操作 Office 文件的标准库,适合做报表生成、数据导入导出、文档批量处理等场景。

相关推荐
小宇的天下6 小时前
Cadence allegro---assign net
服务器·php·apache
软件派1 天前
Apache Paimon终极教程——流批一体存储引擎深度解析(附Flink集成案例+性能调优代码)
apache·性能调优·流批一体·实时数据处理·paimon教程·flink集成·湖仓架构
三水不滴1 天前
Apache RocketMQ的原理与实践
经验分享·apache·rocketmq
whale fall2 天前
celery -A tool.src.main worker --loglevel=info --queues=worker1_queue & 什么意思
python·学习·apache
TracyCoder1232 天前
ElasticSearch核心引擎Apache Lucene(五):相关性算分 (Scoring)
elasticsearch·apache·lucene
码上上班2 天前
一文学会apache httpd
apache
野生技术架构师2 天前
Spring Boot 3 集成 Apache Calcite:多数据源查询的终极解决方案
spring boot·后端·apache
TracyCoder1233 天前
ElasticSearch核心引擎Apache Lucene(四):段 (Segment) 的设计与合并
elasticsearch·apache·lucene
TracyCoder1233 天前
ElasticSearch核心引擎Apache Lucene(三):数值与空间数据索引
elasticsearch·apache·lucene
Elastic 中国社区官方博客3 天前
Elasticsearch:Apache Lucene 2025 年终总结
大数据·人工智能·elasticsearch·搜索引擎·apache·lucene