在实体类中使用
@ExcelProperty(index=0,value ="安全域(必填* 格式:安全域全路径)")
注解标记表头内容
然后我们的监听器中继承AnalysisEventListener<T> ,T是我们的实体类
@Data public class IntranetIpNetworkSegmentListener extends AnalysisEventListener<IntranetIpNetworkSegment> {}
重写invokeHeadMap
/**
* @description: 校验excel头部格式,必须完全匹配
* @param headMap 传入excel的头部(第一行数据)数据的index,name
* @param context
* @throws
* @return void
*
*/
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
super.invokeHeadMap(headMap, context);
if (intranetIpNetworkSegment != null){
try {
Map<Integer, String> indexNameMap = getIndexNameMap(intranetIpNetworkSegment.getClass());
Set<Integer> keySet = indexNameMap.keySet();
for (Integer key : keySet) {
if (StringUtils.isBlank(headMap.get(key))){
String errorMsg="解析excel出错,请传入正确格式的excel";
errorMsgList.add(errorMsg);
excelImportResult.setErrorMsgList(errorMsgList);
throw new ExcelAnalysisStopException("解析excel出错,请传入正确格式的excel");
}
if (!headMap.get(key).equals(indexNameMap.get(key))){
String errorMsg="解析excel出错,请传入正确格式的excel";
errorMsgList.add(errorMsg);
excelImportResult.setErrorMsgList(errorMsgList);
throw new ExcelAnalysisStopException("解析excel出错,请传入正确格式的excel");
}
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}