Java POI 读取Excel写入数据

在日常工作和生活中,我们经常会遇到需要读取Excel文件并将数据写入其中的场景。Java POI是一个强大的Java库,它提供了一组API,用于操作Microsoft Office格式的文件,其中包括Excel文件。本文将介绍如何使用Java POI库来读取Excel文件并将数据写入其中。

准备工作

在开始之前,我们首先需要准备以下工作:

  • Java开发环境
  • Java POI库

你可以从Java官方网站下载并安装Java开发环境。而Java POI库可以从官方网站或通过Maven等构建工具引入项目中。

读取Excel文件

首先,我们需要导入POI库中的相关类:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;

然后,我们可以使用以下代码来读取Excel文件:

try {
    // 创建工作簿
    Workbook workbook = new XSSFWorkbook("path/to/excel/file.xlsx");

    // 获取第一个工作表
    Sheet sheet = workbook.getSheetAt(0);

    // 遍历每一行
    for (Row row : sheet) {
        // 遍历每一个单元格
        for (Cell cell : row) {
            // 获取单元格的值并输出
            switch (cell.getCellType()) {
                case STRING:
                    System.out.print(cell.getStringCellValue() + "\t");
                    break;
                case NUMERIC:
                    System.out.print(cell.getNumericCellValue() + "\t");
                    break;
                case BOOLEAN:
                    System.out.print(cell.getBooleanCellValue() + "\t");
                    break;
                default:
                    System.out.print("\t");
            }
        }
        System.out.println();
    }

    // 关闭工作簿
    workbook.close();
} catch (Exception e) {
    e.printStackTrace();
}

上述代码首先创建了一个Workbook对象来表示Excel文件,并通过XSSFWorkbook类指定了Excel文件的路径。然后,通过调用getSheetAt(0)方法获取第一个工作表,并使用for-each循环遍历每一行和每一个单元格。在遍历过程中,我们可以根据单元格的类型使用getCellType()方法来获取单元格的值。最后,我们关闭工作簿以释放资源。

写入Excel文件

要将数据写入Excel文件,我们可以使用以下代码:

try {
    // 创建工作簿
    Workbook workbook = new XSSFWorkbook();

    // 创建工作表
    Sheet sheet = workbook.createSheet("Sheet1");

    // 创建数据行
    Row row = sheet.createRow(0);

    // 创建单元格并设置值
    Cell cell1 = row.createCell(0);
    cell1.setCellValue("Name");

    Cell cell2 = row.createCell(1);
    cell2.setCellValue("Age");

    // 创建数据行
    Row row2 = sheet.createRow(1);

    // 创建单元格并设置值
    Cell cell3 = row2.createCell(0);
    cell3.setCellValue("John");

    Cell cell4 = row2.createCell(1);
    cell4.setCellValue(25);

    // 保存工作簿
    FileOutputStream outputStream = new FileOutputStream("path/to/new/excel/file.xlsx");
    workbook.write(outputStream);
    workbook.close();
} catch (Exception e) {
    e.printStackTrace();
}

上述代码首先创建了一个新的Workbook对象,并通过createSheet("Sheet1")方法创建了一个名为"Sheet1"的工作表。然后,我们使用createRow()方法创建了一个数据行,并使用createCell()方法创建了单元格,并设置了相应的值。最后,我们使用FileOutputStream将工作簿保存到指定的文件路径,并关闭工作簿。

流程图

下面是使用mermaid语法绘制的读取Excel文件和写入Excel文件的流程图。

flowchart TD;
    Start-->读取Excel文件;
    读取Excel文件-->遍历每一行和每一个单元格;
    遍历每一行和每一个单元格-->获取单元格的值并输出;
    获取单元格的值并输出-->结束;
    Start-->写入Excel文件;
    写入Excel文件-->创建工作簿;
    创建工作簿-->创建工作表;
    创建工作表-->创建数据行;
    创建数据行-->创建单元格并设置值;
    创建单元格