前言
EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。(官网)
添加依赖
pom.xml1 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");
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");
EasyExcel.write(fos, UserExcelDTO.class) .sheet("Sheet1") .doWrite(list);
|
完成
参考文献
哔哩哔哩——Java大联盟