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

相关推荐
浔川python社4 小时前
《C++ 小程序编写系列》(第四部):实战:简易图书管理系统(类与对象篇)
java·开发语言·apache
吧啦蹦吧1 天前
org.apache.commons.beanutils.BeanUtils#populate
apache
java_logo2 天前
Apache IoTDB Docker 容器化部署指南:从入门到生产环境实践
docker·容器·apache·iotdb·iotdb部署教程·iotdb部署文档·docker部署iotdb
bluechips·zhao2 天前
中间件及框架漏洞详解(Nginx、Apache、Tomcat、Redis、Zookeeper、RabbitMQ、Kafka等)
nginx·web安全·网络安全·中间件·apache·网络攻击模型·java-rabbitmq
一个天蝎座 白勺 程序猿2 天前
Apache IoTDB(11):分段聚合深度解析——从原理到实战的完整指南
数据库·apache·iotdb
WZTTMoon3 天前
Apache Tomcat 体系结构深度解析
java·tomcat·apache
fiveym3 天前
Apache HTTP 服务搭建全攻略
网络协议·http·apache
知码者3 天前
对于Thinkphp5可能遇到的保存问题
服务器·php·apache·小程序开发·跨平台小程序
程序员老赵3 天前
Apache IoTDB Docker 容器化部署指南:从入门到生产环境实践
docker·apache
清平乐的技术专栏4 天前
Apache Superset可视化简介
apache