使用Java POI库操作Excel文件

简介

Java POI(Poor Obfuscation Implementation)是一个用于操作各种Office文档(如Excel、Word和PowerPoint)的Java库。它提供了一组API,可以让我们读取、写入和编辑这些文档。

本文将介绍如何使用Java POI库操作Excel文件。首先,我们将学习如何读取现有的Excel文件,然后学习如何创建和写入新的Excel文件。

安装与配置

要使用Java POI库,需要在项目中添加相应的依赖。

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.1.2</version>
</dependency>

读取Excel文件

首先,我们需要创建一个Workbook对象,它代表整个Excel文档。根据Excel文件的格式,我们可以选择创建HSSFWorkbook(用于.xls格式)或XSSFWorkbook(用于.xlsx格式)。

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

public class ExcelReader {
    public static void main(String[] args) {
        try (Workbook workbook = new XSSFWorkbook("example.xlsx")) {
            Sheet sheet = workbook.getSheetAt(0);
            for (Row row : sheet) {
                for (Cell cell : row) {
                    CellValue cellValue = evaluate(cell);
                    if (cellValue != null) {
                        System.out.println(cellValue.getStringValue());
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static CellValue evaluate(Cell cell) {
        FormulaEvaluator evaluator = cell.getSheet().getWorkbook().getCreationHelper().createFormulaEvaluator();
        return evaluator.evaluate(cell);
    }
}

在上述代码中,我们首先创建了一个XSSFWorkbook对象,并指定要读取的Excel文件路径。然后,我们获取第一个工作表(Sheet对象),并遍历每一行和每一个单元格。通过evaluate方法,我们可以获取单元格的值(包括公式的计算结果)。

创建和写入Excel文件

要创建新的Excel文件并写入数据,我们可以使用以下代码:

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

public class ExcelWriter {
    public static void main(String[] args) {
        try (Workbook workbook = new XSSFWorkbook()) {
            Sheet sheet = workbook.createSheet("Sheet1");
            Row row = sheet.createRow(0);
            Cell cell = row.createCell(0);
            cell.setCellValue("Hello, World!");

            try (FileOutputStream fileOutputStream = new FileOutputStream("example.xlsx")) {
                workbook.write(fileOutputStream);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上述代码首先创建一个XSSFWorkbook对象,并创建一个名为"Sheet1"的工作表。然后,我们创建一个行和一个单元格,并在单元格中设置值为"Hello, World!"。最后,我们将工作簿写入到指定的文件中。

序列图

下面是使用Java POI库读取Excel文件的序列图:

sequenceDiagram
    participant Client
    participant JavaPOI
    participant ExcelFile

    Note over Client: 创建ExcelReader对象
    Client->>+JavaPOI: 创建XSSFWorkbook对象
    JavaPOI->>-ExcelFile: 载入example.xlsx文件
    loop 遍历每个单元格
        JavaPOI->>-ExcelFile: 获取单元格的值
        ExcelFile-->>-JavaPOI: 单元格的值
        JavaPOI-->>-Client: 打印单元格的值
    end

类图

下面是Java POI库的类图:

classDiagram
    class Workbook
    class Sheet
    class Row
    class Cell
    class CellValue
    class FormulaEvaluator
    class XSSFWorkbook
    class FileOutputStream

    Workbook <|-- XSSFWorkbook
    FileOutputStream <-- Workbook
    FormulaEvaluator <-- Workbook
    CellValue <-- FormulaEvaluator
    Sheet <-- Workbook
    Row <-- Sheet
    Cell <-- Row

总结

本文介绍了如何使用Java POI库来读取和写入Excel文件。通过使用Java POI,我们可以轻松地操作Excel文件,对数据进行读取、写入和编辑。希望这篇文章对你有所帮助!