【笔记】EasyExcel学习笔记

前言

EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。(官网

添加依赖

pom.xml
1
2
3
4
5
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.2</version>
</dependency>

定义数据实体类

@ExcelProperty(""):定义表头

value = "":定义表头
index = 0:定义表头索引,默认按照属性定义顺序作为表头顺序

@ColumnWidth(40):定义列宽度

1
2
3
4
5
6
7
8
9
10
11
@Data
@AllArgsConstructor
public class UserExcelDTO {

@ExcelProperty("第一列")
private String first;

@ExcelProperty("第二列")
private String last;

}

读取文件

invoke():读取每一行数据的回调函数
doAfterAllAnalysed():所有行读取完成的回调函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 文件输入流
FileInputStream fis = new FileInputStream("<file>.xlsx");

// 读取Excel文件
EasyExcel.read(fis)
.head(UserExcelDTO.class)
.sheet()
.registerReadListener(new AnalysisEventListener<UserExcelDTO>() {
@Override
public void invoke(UserExcelDTO userExcelDTO, AnalysisContext analysisContext) {
System.out.println(userExcelDTO);
}

@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
System.out.println("finish");
}
})
.doRead();

写入文件

1
2
3
4
5
6
7
8
9
10
11
// 准备数据
List<UserExcelDTO> list = new ArrayList<>();
list.add(new UserExcelDTO("", ""));

// 文件输出流
FileOutputStream fos = new FileOutputStream("<file>.xlsx");

// 写入Excel文件
EasyExcel.write(fos, UserExcelDTO.class)
.sheet("Sheet1")
.doWrite(list);

完成

参考文献

哔哩哔哩——Java大联盟