1.dependency
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.6</version>
</dependency>
2.Excel表格内容
3.封装的实体类
@Data
public class ExcelData {
@ExcelProperty("ID")
private String id;
@ExcelProperty("用户名")
private String name;
@ExcelProperty("邮箱")
private String email;
@ExcelProperty("性别")
private String gender;
@ExcelProperty("积分")
private Integer score;
@ExcelProperty("IP")
private String ip;
@ExcelProperty("登入次数")
private Integer count;
@ExcelProperty("加入时间")
private Date date;
}
4.核心代码
public class EasyExcelDemo {
public static void main(String[] args) {
List<ExcelData> excelData = parseData();
// 写入位置及名字
EasyExcel.write("D:\\用户数据表_副本.xls")
// 加上表头(格式可以自定义)
.head(ExcelData.class)
.excelType(ExcelTypeEnum.XLS)
.sheet("用户数据表")
.doWrite(excelData);
}
public static List<ExcelData> parseData() {
// 把每次回调读取的数据,封装成实体类ExcelData,再放入到List中
List<ExcelData> excelDataList = new ArrayList<>();
// 读取文件
EasyExcel.read("D:\\用户数据表.xls")
// 把表头映射成实体类
.head(ExcelData.class)
// 指定sheet
.sheet("用户数据表")
// 注册监听器进行数据的解析
.registerReadListener(new AnalysisEventListener<ExcelData>() {
@Override
public void invoke(ExcelData excelData, AnalysisContext analysisContext) {
// 一行数据读取完成之后的回调(观察者模式)
excelDataList.add(excelData);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
// 通知文件读取完毕
System.out.println("数据读取完毕");
}
}).doRead();
// 遍历
excelDataList.forEach(System.out::println);
// 返回
return excelDataList;
}
}
闲话
目前操作Excel的工具有apache的POI(最原生,封装太浅,晦涩难懂),和国内的EasyPOI(简化了apache的EasyPOI,好用了一些),还有阿里推出的EasyExcel(用起来最简单,可能有些潜在bug);
感谢b站宁楠老师的干货! 记录成笔记方便以后工作中用到快速拿出来看
原视频地址:https://www.bilibili.com/video/BV1fK4y1D7Mu