Apache POI 入门案例(一遍就能学会的Excel文件操作)

本文详细介绍如何使用Apache POI库在Java中读写Excel文件。包括使用XSSFWorkbook和XSSFSheet对象进行数据读取和写入的具体步骤,以及两种读取Excel数据的方法。同时,提供了创建Excel文件并写入数据的实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

POI介绍

Apache POI是用Java编写的免费开源的跨平台的Java工具,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用POI操作Excel文件。

maven 坐标:

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

POI结构:

* ==HSSF - 提供读写Microsoft Excel XLS格式档案的功能==
* ==XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能==
* HWPF - 提供读写Microsoft Word DOC格式档案的功能
* HSLF - 提供读写Microsoft PowerPoint格式档案的功能
* HDGF - 提供读Microsoft Visio格式档案的功能
* HPBF - 提供读Microsoft Publisher格式档案的功能
* HSMF - 提供读Microsoft Outlook格式档案的功能

入门案例

从Excel文件读取数据

方式一:
  1. 需求:使用POI可以从一个已经存在的Excel文件 中读取数据

  2. 步骤:
    1. 创建工作薄对象
    2. 获得工作表对象
    3. 遍历工作表对象,获得行对象
    4. 遍历行对象,获得列对象
    5. 获得每个单元格数据
    6. 释放资源

  3. 实现代码

public void fun01() throws Exception {
    //1 创建工作簿对象
    XSSFWorkbook workbook = new XSSFWorkbook("D:/hello.xlsx");
    //2 获得工作表对象
    XSSFSheet sheet = workbook.getSheetAt(0);
    //3 遍历工作表 获得行对象
    for (Row row : sheet) {
        //4 遍历行对象 获得列对象
        for (Cell cell : row) {
            //5 获得列里面的内容
            System.out.println(cell.getStringCellValue());
        }
        System.out.println("------------");
    }
    //6.关闭
    workbook.close();
}

小结:
通过上面的入门案例可以看到,POI操作Excel表格封装了几个核心对象:

* XSSFWorkbook:工作簿
* XSSFSheet:工作表
* Row:行
* Cell:单元格

上面案例是通过遍历工作表获得行,遍历行获得列,最终获取单元格中的值。

方式二:

还有一种方式就是获取工作表最后一个行号,从而根据行号获得行对象,通过行获取最后一个单元格索引,从而根据单元格索引获取每行的一个单元格对象,代码如下:

//1.创建工作簿对象
XSSFWorkbook workbook = new XSSFWorkbook("D:/hello.xlsx");
//2.获得工作表对象
XSSFSheet sheet = workbook.getSheetAt(0);
//3.获得最后一行的行号
int lastRowNum = sheet.getLastRowNum();
//4.遍历行
for(int i =0;i<=lastRowNum;i++){
    XSSFRow row = sheet.getRow(i);
    //5.获得最后一列的列号
    short lastCellNum = row.getLastCellNum();
    //6.遍历列
    for(int j = 0;j<lastCellNum;j++){
        //7.取出数据
        XSSFCell cell = row.getCell(j);
        System.out.println(cell.getStringCellValue());
    }
}
//8.释放资源
workbook.close();

向Excel文件写入数据(创建文件,写入数据)
  1. 需求:使用POI可以在内存中创建一个Excel文件并将数据写入到这个文件,最后通过输出 流将内存中的Excel文件下载到磁盘中

  2. 步骤:
    1. 创建工作薄对象
    2. 创建工作表对象
    3. 创建行对象
    4. 创建列(单元格)对象,设置内容
    5. 通过流写入到磁盘中

  3. 实现

    //使用POI可以在内存中创建一个Excel文件并将数据写入到这个文件,最后通过输出流将内存中的Excel文件下载到磁盘
    public void fun03() throws Exception {
        //1 创建工作簿对象
        XSSFWorkbook workbook = new XSSFWorkbook();
        //2 创建工作表对象
        XSSFSheet xssfSheet = workbook.createSheet("学生名单");
        //3 创建第一行
        XSSFRow row01 = xssfSheet.createRow(0);
        //4 创建列,每个单元格设置内容
        row01.createCell(0).setCellValue("姓名");
        row01.createCell(1).setCellValue("性别");
        row01.createCell(2).setCellValue("地址");
        //创建第二行
        XSSFRow row02 = xssfSheet.createRow(1);
        row02.createCell(0).setCellValue("张三");
        row02.createCell(1).setCellValue("男");
        row02.createCell(2).setCellValue("深圳");
         //创建第三行
        XSSFRow row03 = xssfSheet.createRow(2);
        row03.createCell(0).setCellValue("李四");
        row03.createCell(1).setCellValue("男");
        row03.createCell(2).setCellValue("北京");

        //5.通过输出流对象写到磁盘
        FileOutputStream os = new FileOutputStream("D:/student.xlsx");
        workbook.write(os);
        os.flush();
        os.close();

        workbook.close();
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值