pom 依赖
com.alibaba easyexcel2.2.8
编写实体解析对应的实体类,如下,一个字段对应多个列名称,easyexcel目前未实现一列多名称的解析,此文档适用于导入模板列名调整,同时兼容之前的版本
package eample.model;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
@ExcelIgnoreUnannotated
public class ExpectionWhiteListUserimportVO {
@ExcelProperty(value = {"姓名","名字"})
private String name;
@ExcelProperty(value = {"国际代码1","区号"})
private String areaCode;
@ExcelProperty(value = {"手机号","电话号码"})
private String phone;
}
编写解析类
package com.ev.easyexcel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.exception.ExcelAnalysisException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class CustomizeListener extends AnalysisEventListener
列值对应
package com.ev.easyexcel;
import com.alibaba.excel.annotation.ExcelProperty;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
public class EasyExcelParsing {
public static void setFieldValue(Map valueMap, Map fieldValue, Object obj) {
Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
//遍历每个属性
if (field.isAnnotationPresent(ExcelProperty.class) && fieldValue.containsKey(field.getName())) {
field.setAccessible(true);
try {
field.set(obj, valueMap.get(fieldValue.get(field.getName())));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
public static Map fieldValueSet(Map headMap, Class> cla) {
Map fieldValue = new HashMap<>();
Field[] fields = cla.getDeclaredFields();
for (Field field : fields) {
//遍历每个属性
if (field.isAnnotationPresent(ExcelProperty.class)) {
ExcelProperty excelProperty = field.getAnnotation(ExcelProperty.class);
for (Map.Entry entry : headMap.entrySet()) {
if (Arrays.asList(excelProperty.value()).contains(entry.getValue())) {
fieldValue.put(field.getName(), entry.getKey());
}
}
}
}
return fieldValue;
}
}
编写自己的处理类
package eample.model;
import com.ev.easyexcel.CustomizeListener;
public class MyListener extends CustomizeListener {
public MyListener(Class> classType) {
super(classType);
}
@Override
public void dataDeal() {
list.forEach(item->{
ExpectionWhiteListUserimportVO expectionVO= (ExpectionWhiteListUserimportVO) item;
System.out.println(expectionVO.getName());
System.out.println(expectionVO.getAreaCode());
System.out.println(expectionVO.getPhone());
});
}
}
启动代码
EasyExcelFactory.read("C:\Users\Administrator\Desktop\模板.xlsx", new MyListener(ExpectionWhiteListUserimportVO.class)).headRowNumber(1).sheet().doRead();
就可以正常解析了



