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 文件的标准库,适合做报表生成、数据导入导出、文档批量处理等场景。

相关推荐
源图客6 天前
Apache Flink 2.3.0(最新版本)
大数据·flink·apache
代立冬9 天前
927 个 PR:Apache SeaTunnel 3.0.0 正式发布!AI 时代,数据集成正在迎来新的可能
人工智能·apache
zhongben_keji10 天前
家政小程序开发全解:经营模式、品类矩阵、派单约束与信用核验
线性代数·矩阵·apache
weixin_1772972206911 天前
二手旧物回收小程序先要解决的不是下单,是“上门之后价格变了怎么办“
小程序·apache
努力变的更好11 天前
H5与小程序之间的回调
前端·小程序·apache
十碗饭吃不饱13 天前
Apache POI 踩坑:setFontFamily 二次设置字体不生效、样式残留问题深度解析
java·word·apache
心随_风动14 天前
Ubuntu系统安装Apache服务教程
linux·ubuntu·apache
ly768915 天前
Kafka 消费者重试与死信:Spring for Apache Kafka 的边界设计
spring·kafka·apache·并发消费·消费者重试·死信主题·位移提交
HoneyMoose16 天前
Ubuntu Apache 配置多站点提示 SSL 错误
ubuntu·apache·ssl
骑着蜗牛撵大象32716 天前
一套引擎撑起树表双模型:Apache IoTDB 2.0 与 TsFile 的选型答卷
apache·时序数据库·iotdb·tsfile·树模型·表模型