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. 核心功能
-
Excel 操作
- 读取/写入单元格数据
- 设置单元格样式、字体、边框、颜色
- 合并单元格、创建公式
- 读取/创建图表和图片
-
Word 操作
- 读取/修改文本内容
- 处理段落、表格、图片
- 添加页眉/页脚、样式设置
-
PowerPoint 操作
- 创建幻灯片
- 设置文本框、图片、形状
- 导出为图片
-
通用功能
- 处理 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 文件的标准库,适合做报表生成、数据导入导出、文档批量处理等场景。