Apache POI的简单使用

1.Apache POI简单介绍

Apache POI是Apache软件基金会的开源项目,提供了Java操作Microsoft Office格式文件的API,支持Excel、Word、PowerPoint等格式的读写操作。其核心优势在于:

  1. 跨平台兼容性:纯Java实现,可在任何支持Java的环境中运行
  2. 格式全面支持:覆盖OLE2格式(.xls、.doc)和OOXML格式(.xlsx、.docx)
  3. 活跃的社区维护:2025年4月发布的最新稳定版本5.4.1,持续修复安全漏洞和性能优化

一般情况下,都是使用来读写Excel文件。

2.实际应用场景

  • 数据导出:将数据库查询结果导出为Excel报表(店铺经营报表,各种业务系统的导出报表)
  • 批量导入:解析用户上传的Excel数据并入库(批量导入各种业务数据)
  • 模板生成:基于固定模板自动填充数据生成个性化文档(根据个性化模板模块进行读写操作)

3.环境搭建,如何简单使用

Apache POI既可以将数据写入Excel文件,也可以读取Excel文件中的数据,接下来分别进行实现。

3.1导入Apache POI的maven坐标:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.16</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.16</version>
</dependency>

特别说明:

  • POI 4.0.1及以上需要Java 8+环境
  • .xls (Excel 97-2003):需引入poi模块
  • .xlsx (Excel 2007+):需额外引入poi-ooxml模块

3.2 对于Excel文件的读写操作实现

3.2.1创建XLSX文件(.xlsx格式)(也可以说是写Excel文件)

import org.apache.poi.ss.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;

public class CreateExcel {
    public static void main(String[] args) {
        try (Workbook workbook = new XSSFWorkbook()) {
            // 创建工作表
            Sheet sheet = workbook.createSheet("员工信息表");
            
            // 创建标题行
            Row headerRow = sheet.createRow(0);
            headerRow.createCell(0).setCellValue("工号");
            headerRow.createCell(1).setCellValue("姓名");
            headerRow.createCell(2).setCellValue("部门");
            
            // 填充数据行
            Row dataRow = sheet.createRow(1);
            dataRow.createCell(0).setCellValue("EMP001");
            dataRow.createCell(1).setCellValue("张三");
            dataRow.createCell(2).setCellValue("技术部");
            
            // 自动调整列宽
            for (int i = 0; i < 3; i++) {
                sheet.autoSizeColumn(i);
            }
            
            // 写入文件
            try (FileOutputStream fos = new FileOutputStream("员工信息.xlsx")) {
                workbook.write(fos);
            }
            System.out.println("Excel文件创建成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这个功能就是写一个名为员工信息.xlsx的Excel表

3.2.2读取XLSX文件

import org.apache.poi.ss.usermodel.*;
import java.io.FileInputStream;
import java.io.IOException;

public class ReadExcel {
    public static void main(String[] args) {
        try (Workbook workbook = new XSSFWorkbook(new FileInputStream("员工信息.xlsx"))) {
            Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表
            
            // 遍历行
            for (Row row : sheet) {
                // 遍历单元格
                for (Cell cell : row) {
                    String value = switch (cell.getCellType()) {
                        case STRING -> cell.getStringCellValue();
                        case NUMERIC -> String.valueOf(cell.getNumericCellValue());
                        case BOOLEAN -> String.valueOf(cell.getBooleanCellValue());
                        default -> "";
                    };
                    System.out.print(value + "\t");
                }
                System.out.println();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这个功能就是读取员工信息.xlsx表中的信息,输出在控制台上。

4.注意事项

  1. 版本选择:生产环境建议使用5.4.1及以上版本,修复了多个安全漏洞
  2. 内存管理:处理超过10万行数据时,优先使用SXSSF而非XSSF
  3. 异常处理:文件操作需完善try-with-resources语句,确保资源正确释放
  4. 格式兼容性:.xls格式(HSSF)最大支持65536行,.xlsx(XSSF)支持1048576行

5.总结

Apache POI作为Java操作Office文档的事实标准库,提供了强大而灵活的API。本文介绍的基础操作足以满足日常开发需求,更多高级功能如图表生成、批注处理等可参考官方文档进一步探索。建议结合实际项目需求,合理选择POI模块和版本,充分发挥其在数据处理和文档生成中的价值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值