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

相关推荐
弘毅 失败的 mian2 小时前
Linux 编程第一个小程序:进度条
linux·经验分享·笔记·小程序·apache
wasp5202 天前
Apache Hudi 项目总体分析
数据挖掘·apache·hudi·数据湖仓
字节拾光录2 天前
Java工具库三足鼎立:Hutool、Apache Commons、Guava深度测评与场景化选型指南
java·apache·guava
清平乐的技术专栏3 天前
Apache SeaTunnel的发展历程
apache
SelectDB3 天前
宇信科技基于 SelectDB & Apache Doris 构建实时智能的银行经营分析平台
数据库·apache
SelectDB3 天前
上海证券 SelectDB 升级实践:湖仓流批一体落地与 Elasticsearch 全面替换
数据库·apache
熊文豪4 天前
工业物联网时序数据库选型指南:Apache IoTDB 的技术优势与应用实践
物联网·apache·时序数据库·iotdb
一个天蝎座 白勺 程序猿4 天前
Apache IoTDB(10):数据库操作——从查询到优化的全链路实践指南
数据库·apache·时序数据库·iotdb
云计算老刘4 天前
1.项目实战:LAMP-LNMP-分离部署
linux·mysql·php·apache·mariadb