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 文件,包括:
- 环境配置与依赖导入;
- 创建 Excel 文件并写入数据;
- 读取 Excel 文件并输出数据;
- 一些常见的进阶功能和技巧。
EasyExcel 是一个轻量级且高效的 Excel 处理库,适用于大多数日常开发中的 Excel 操作需求。希望本文能够帮助你快速入门 EasyExcel,并在实际项目中发挥作用。