Java EasyExcel 入门教程

Java EasyExcel 入门教程

简介

在 Java 项目中,处理 Excel 文件通常是一个常见的需求。对于较大规模的 Excel 文件,常见的库如 Apache POI 和 JExcel 等,虽然功能强大,但在性能上可能会存在一定的瓶颈。EasyExcel 是阿里巴巴开源的一个轻量级的 Excel 处理工具,它优化了性能,特别适合处理大数据量的 Excel 文件。本文将为大家介绍如何使用 EasyExcel 从零开始处理 Excel 文件。

1. 环境准备

在开始使用 EasyExcel 之前,需要先进行一些基本的环境配置。

1.1 添加依赖

在项目中使用 EasyExcel 前,首先需要引入相关的 Maven 依赖。打开 pom.xml 文件,添加以下内容:

xml
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.6</version> <!-- 请根据实际情况选择版本 -->
</dependency>
</dependencies>

1.2 IDE 配置

如果你使用的是 IntelliJ IDEA 或者 Eclipse 等 IDE,可以通过 Maven 进行依赖下载和构建。IDE 会自动解析 pom.xml 文件并下载依赖包。

2. 创建 Excel 文件

在了解了基础的环境配置后,我们可以开始使用 EasyExcel 创建和读取 Excel 文件。首先让我们从创建一个简单的 Excel 文件开始。

2.1 创建数据模型

EasyExcel 的设计理念是通过 POJO(普通 Java 对象)来映射 Excel 文件中的数据。假设我们要创建一个包含员工信息的 Excel 文件,首先需要创建一个数据模型类。

```java
import com.alibaba.excel.annotation.ExcelProperty;

public class Employee {

@ExcelProperty("员工ID")
private Long employeeId;

@ExcelProperty("姓名")
private String name;

@ExcelProperty("职位")
private String position;

@ExcelProperty("入职日期")
private String joinDate;

// Getters and Setters
public Long getEmployeeId() {
    return employeeId;
}

public void setEmployeeId(Long employeeId) {
    this.employeeId = employeeId;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getPosition() {
    return position;
}

public void setPosition(String position) {
    this.position = position;
}

public String getJoinDate() {
    return joinDate;
}

public void setJoinDate(String joinDate) {
    this.joinDate = joinDate;
}

}
```

在上面的 Employee 类中,使用了 @ExcelProperty 注解来标注 Excel 文件中的列名与属性之间的映射关系。

2.2 写入 Excel 文件

接下来,我们可以创建一个方法来写入数据到 Excel 文件。

```java
import com.alibaba.excel.EasyExcel;

import java.util.ArrayList;
import java.util.List;

public class EasyExcelWriteDemo {

public static void main(String[] args) {
    // 创建测试数据
    List<Employee> employees = new ArrayList<>();
    employees.add(new Employee(1L, "张三", "开发经理", "2020-06-01"));
    employees.add(new Employee(2L, "李四", "测试工程师", "2021-01-15"));
    employees.add(new Employee(3L, "王五", "产品经理", "2019-09-10"));

    // 写入 Excel 文件
    String fileName = "employees.xlsx";
    EasyExcel.write(fileName, Employee.class)
             .sheet("员工信息")
             .doWrite(employees);

    System.out.println("Excel 文件已创建并写入数据!");
}

}
```

2.3 运行结果

运行上述代码后,你会发现项目根目录下生成了一个名为 employees.xlsx 的文件,文件内容如下:

| 员工ID | 姓名 | 职位 | 入职日期 |
|--------|------|--------|----------|
| 1 | 张三 | 开发经理 | 2020-06-01 |
| 2 | 李四 | 测试工程师 | 2021-01-15 |
| 3 | 王五 | 产品经理 | 2019-09-10 |

3. 读取 Excel 文件

EasyExcel 除了提供方便的写入功能外,还支持读取 Excel 文件。我们通过一个简单的例子来演示如何读取 Excel 文件中的数据。

3.1 读取数据模型

我们已经创建了 Employee 类来对应 Excel 文件中的数据。现在,我们可以使用 EasyExcel 提供的 API 来读取文件。

```java
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.PageReadListener;

import java.util.List;

public class EasyExcelReadDemo {

public static void main(String[] args) {
    String fileName = "employees.xlsx";

    // 读取 Excel 文件
    EasyExcel.read(fileName, Employee.class, new PageReadListener<Employee>(dataList -> {
        // 每次读取一页数据
        for (Employee employee : dataList) {
            System.out.println("读取到的员工信息: " + employee.getEmployeeId() + " - " + employee.getName());
        }
    })).sheet().doRead();

    System.out.println("Excel 文件已读取完毕!");
}

}
```

3.2 运行结果

运行上述代码后,你将看到如下输出:

读取到的员工信息: 1 - 张三
读取到的员工信息: 2 - 李四
读取到的员工信息: 3 - 王五

4. 进阶功能

除了基本的读写功能外,EasyExcel 还支持许多进阶特性,如:

4.1 自定义格式化和日期处理

你可以通过 @ExcelProperty 注解来设置日期格式、数值格式等。例如:

java
@ExcelProperty(value = "入职日期", format = "yyyy-MM-dd")
private Date joinDate;

4.2 设置头部样式

EasyExcel 提供了对 Excel 文件头部的样式设置支持。你可以自定义字体、颜色、边框等。例如:

```java
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
headWriteCellStyle.setWrapped(true); // 设置自动换行
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);

WriteSheet writeSheet = EasyExcel.writerSheet("员工信息")
.head(Employee.class)
.registerWriteHandler(new CellStyleStrategy(headWriteCellStyle, contentWriteCellStyle))
.build();
```

4.3 处理大数据量

EasyExcel 非常擅长处理大规模的 Excel 数据文件,提供了流式读取和写入功能,可以在不占用过多内存的情况下高效处理大文件。通过 PageReadListener 和流式写入,你可以避免一次性将所有数据加载到内存中,从而提高性能。

5. 总结

本文介绍了如何在 Java 项目中使用 EasyExcel 来处理 Excel 文件,包括:

  1. 环境配置与依赖导入;
  2. 创建 Excel 文件并写入数据;
  3. 读取 Excel 文件并输出数据;
  4. 一些常见的进阶功能和技巧。

EasyExcel 是一个轻量级且高效的 Excel 处理库,适用于大多数日常开发中的 Excel 操作需求。希望本文能够帮助你快速入门 EasyExcel,并在实际项目中发挥作用。

THE END