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 依赖。
  • 异常处理 :操作文件时要处理 IOException 和 InvalidFormatException。

6. 参考资料


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

相关推荐
网络豆14 天前
Apache Maven 鸿蒙 PC 适配全记录:把 JVM 构建工具交付到 HiShell
maven·apache·harmonyos
网络豆14 天前
Apache Hive 鸿蒙 PC 适配全记录:以 Qt 客户端打通 HiveQL、监控与元数据访问
hive·apache·harmonyos
网络豆14 天前
Apache HBase 鸿蒙 PC 适配全记录:用 Qt 原生客户端打通 REST 管理与数据读写
apache·hbase·harmonyos
无巧不成书021815 天前
Apache Tomcat 9 下载全指南(Windows,Linux,macOS):版本选型、国内镜像、SHA-512 与 PGP 完整性校验
windows·tomcat·apache
Dream-Y.ocean15 天前
鸿蒙平台 Apache Tomcat 管理控制台适配实战:基于 Electron 壳方案的真实 HTTP 服务器实现
tomcat·apache·harmonyos
betazhou15 天前
Apache seatunel常用配置参数解析说明
apache·seatunnel
凤山老林16 天前
Spring Boot 集成 Apache Kafka Streams 构建流处理应用:状态存储、窗口聚合与
spring boot·kafka·apache
DolphinScheduler社区16 天前
Apache DolphinScheduler 8 月报:权限安全加固,调度补火上线,性能与稳定性持续提升
大数据·安全·开源·apache·任务调度·海豚调度
sbjdhjd17 天前
从 7 字符文件名拼接到二维数组取值:PHP 无参函数限制下的受控靶场复盘 | (7字符绕过)
网络·nginx·安全·网络安全·云计算·php·apache
Jackyzhe18 天前
Apache Iceberg Variant 类型:v3 半结构化数据不再「二选一」
apache