EasyExcel
定义:是阿里巴巴开源的一个Excel处理的框架,使用简单,节省内存,在解析Excel时,没有
将文件数据一次性的加载内存中,而是从磁盘上一行一行的读取数据,逐个解析。
EasyExcel操作
1.引入EasyExcel依赖和poi依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
2.创建实体类
@ToString
@Data
public class ExcelData {
//index:设置列对于的属性
@ExcelProperty(value = "学生编号",index = 0)
private Integer sno;
@ExcelProperty(value = "学生姓名",index = 1)
private String sname;
}
ExcelProperty:设置Excel表头元素
2.创建读取监听器
public class ExcelLinster extends AnalysisEventListener<ExcelData> {
// 读取表头
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
System.out.println("表头"+headMap);
}
// 一行一行读取
@Override
public void invoke(ExcelData excelData, AnalysisContext analysisContext) {
System.out.println(excelData);
}
// 读取完成以后
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
System.out.println("读完了");
}
}
3.业务实现
public class ExcelService {
public static void main(String[] args) {
// 写入(写入)的路径
String filename = "D:\\ideaWokeSpace\\ExcelFile\\1.xlsx";
// 写入的数据
List<ExcelData> excelDataList=new ArrayList<>();
for(int i=0;i<6;i++){
ExcelData excelData=new ExcelData();
excelData.setSno(i);
excelData.setSname("student"+i);
excelDataList.add(excelData);
}
// 写操作
EasyExcel.write(filename, ExcelData.class).sheet("学生").doWrite(excelDataList);
// System.out.println(excelDataList);
// 读操作
EasyExcel.read(filename,ExcelData.class,new ExcelLinster()).sheet().doRead();
}
}
注意:当属性名有大写字母时,值将读不进去