什么是EasyExcel?
EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。 github地址:https://github.com/alibaba/easyexcel
如何使用?
1.引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.5</version>
</dependency>
2.1读Excel
具体代码参考官网上的demo
https://www.yuque.com/easyexcel/doc/read
总结:
2.1根据excel里的内容,创建对应的实体类
public class Student {
//强制读取第1个 这里不建议 index 和 name 同时用,要么一个对象只用index,要么一个对象只用name去匹配
@ExcelProperty(index = 0)
String name;
//用名字去匹配,这里需要注意,如果名字重复,会导致只有一个字段读取到数据
@ExcelProperty("性别")
String sex;
@ExcelProperty("年龄")
Integer age;
}
2.2创建对应的监听类并且实现ReadListener接口并且需要在监听器内实现两个方法;
invoke方法当EasyExcel解析了一条数据后就会执行;
doAfterAllAnalysed方法,在所有数据都解析完成后会执行;
public class DemoDataListener extends AnalysisEventListener<Student> {
List<Student> list = new ArrayList<Student>();
/**
* 如果使用了spring,请使用这个构造方法。每次创建Listener的时候需要把spring管理的类传进来
*/
public DemoDataListener() {}
/**
* 这个每一条数据解析都会来调用
*
* @param data
* @param context
*/
@Override
public void invoke(Student data, AnalysisContext context) {
System.out.println("解析到一条数据:{}"+JSON.toJSONString(data));
list.add(data);
}
/**
* 所有数据解析完成了 都会来调用
*
* @param context
*/
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
System.out.println(JSON.toJSONString(list));
}
}
2.3main方法
@Test
public void readExcel(){
String fileName = "C:\\Users\\MEC\\Desktop\\tyBoys.xls";
EasyExcel.read(fileName, Student.class, new DemoDataListener()).sheet().doRead();
}

2.2写Excel
@Test
public void writeExcel(){
//将List写到设定路径的excel表的sheet中
EasyExcel.write(new File("C:\\Users\\MEC\\Desktop\\tyBoys.xls")).sheet().doWrite(getData());
}
public static List<Student> getData(){
ArrayList<Student> students = new ArrayList<Student>();
students.add(new Student("曹操","男",50));
students.add(new Student("曹爽","男",38));
students.add(new Student("曹仁","男",20));
return students;
}
