使用Java追加写入Excel文件

在日常的开发中,处理Excel文件是一个常见的任务。特别是在数据分析、报表生成等场景中,能够对Excel文件进行追加写操作显得尤为重要。本文将介绍如何使用Java语言实现Excel文件的追加写入,并提供相关代码示例。

1. 相关库

在Java中,我们可以使用Apache POI库来进行Excel文件的读写操作。Apache POI提供了丰富的API来操作Excel文件,包括创建、新增、读取及修改等功能。

1.1 Maven依赖

如果你在使用Maven构建项目,可以通过在pom.xml文件中添加以下依赖来使用Apache POI:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.3</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.4</version>
</dependency>
<dependency>
    <groupId>org.apache.xmlbeans</groupId>
    <artifactId>xmlbeans</artifactId>
    <version>5.0.2</version>
</dependency>

2. Java代码示例

接下来,我们将创建一个Java类,名为ExcelAppender,用于向已存在的Excel文件追加数据。代码如下:

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

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ExcelAppender {

    private String excelFilePath;

    public ExcelAppender(String excelFilePath) {
        this.excelFilePath = excelFilePath;
    }

    public void appendRow(Object[] data) throws IOException {
        FileInputStream fis = new FileInputStream(excelFilePath);
        Workbook workbook = new XSSFWorkbook(fis);
        Sheet sheet = workbook.getSheetAt(0);

        int rowCount = sheet.getPhysicalNumberOfRows();
        Row newRow = sheet.createRow(rowCount);

        for (int i = 0; i < data.length; i++) {
            Cell cell = newRow.createCell(i);
            if (data[i] instanceof String) {
                cell.setCellValue((String) data[i]);
            } else if (data[i] instanceof Integer) {
                cell.setCellValue((Integer) data[i]);
            }
        }

        fis.close();

        FileOutputStream fos = new FileOutputStream(excelFilePath);
        workbook.write(fos);
        fos.close();
        workbook.close();
    }

    public static void main(String[] args) {
        ExcelAppender appender = new ExcelAppender("example.xlsx");
        try {
            appender.appendRow(new Object[]{"John Doe", 30, "Engineer"});
            appender.appendRow(new Object[]{"Jane Smith", 25, "Designer"});
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2.1 代码解析

  • 构造函数: 在构造函数中,我们指定要操作的Excel文件路径。
  • appendRow 方法: 该方法接收一个对象数组作为输入,然后将数据追加到Excel文件的末尾。
    • 首先打开Excel文件,并获取工作表(Sheet)。
    • 通过getPhysicalNumberOfRows()获取当前行数,以此决定在何处插入新的数据行。
    • 创建新行并逐个添加单元格。
    • 最后将修改保存到文件中并关闭流。

2.2 类图

以下是ExcelAppender类的类图示意,使用Mermaid语法表示:

classDiagram
    class ExcelAppender {
        +String excelFilePath
        +ExcelAppender(String excelFilePath)
        +void appendRow(Object[] data)
    }

3. 总结

通过上面的示例,我们可以看到使用Java和Apache POI库追加写入Excel文件的过程。无论是数据分析还是报表生成,能够灵活操作Excel文件都是开发者所需掌握的重要技能。

当然,随着需求的不断增加,还可以扩展更多功能,如数据校验、格式设置等。掌握Excel的相关操作,不仅能够提升工作效率,还能帮助团队进行更高效的数据处理。

希望本文能够帮助你理解如何在Java中追加写入Excel文件,并鼓励你在此基础上进行更深入的探索与实践。