|
|
|
@ -1,10 +1,11 @@
|
|
|
|
|
package cn.jlw.util.excel;
|
|
|
|
|
package cn.jlw.util.excel.listener;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.map.MapUtil;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import cn.hutool.core.util.ReflectUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import cn.jlw.util.excel.ExcelFailRecord;
|
|
|
|
|
import com.alibaba.excel.context.AnalysisContext;
|
|
|
|
|
import com.alibaba.excel.exception.ExcelDataConvertException;
|
|
|
|
|
import com.alibaba.excel.read.listener.ReadListener;
|
|
|
|
@ -17,9 +18,12 @@ import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 我的通用Excel检查格式,监听器
|
|
|
|
|
* 我的通用Excel检查格式的监听器
|
|
|
|
|
* @author: mlx
|
|
|
|
|
* @description:
|
|
|
|
|
* @date: 2022/11/28 9:17
|
|
|
|
|
* @version: 1.0
|
|
|
|
|
* @param <T>
|
|
|
|
|
* @author mlx
|
|
|
|
|
*/
|
|
|
|
|
@Data
|
|
|
|
|
@Slf4j
|
|
|
|
@ -32,6 +36,14 @@ public class MyValidateExcelCellDataListener<T> implements ReadListener<T> {
|
|
|
|
|
|
|
|
|
|
private Map<Integer, ExcelFailRecord> failMap = MapUtil.newHashMap(16);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 功能描述: <br>
|
|
|
|
|
* 〈每一行的处理〉
|
|
|
|
|
* @param bean
|
|
|
|
|
* @param context
|
|
|
|
|
* @Author: 87966
|
|
|
|
|
* @Date: 2022/11/28 9:51
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public void invoke(T bean, AnalysisContext context) {
|
|
|
|
|
|
|
|
|
@ -71,6 +83,16 @@ public class MyValidateExcelCellDataListener<T> implements ReadListener<T> {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 功能描述: <br>
|
|
|
|
|
* 时候异常的执行方法
|
|
|
|
|
* @Param:
|
|
|
|
|
* @param exception
|
|
|
|
|
* @param context
|
|
|
|
|
* @Return:
|
|
|
|
|
* @Author: 87966
|
|
|
|
|
* @Date: 2022/11/28 9:49
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public void onException(Exception exception, AnalysisContext context) {
|
|
|
|
|
log.error(exception.getMessage(), exception);
|
|
|
|
@ -82,6 +104,17 @@ public class MyValidateExcelCellDataListener<T> implements ReadListener<T> {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 功能描述: <br>
|
|
|
|
|
* 插入异常信息
|
|
|
|
|
* @Param:
|
|
|
|
|
* @param rowIndex
|
|
|
|
|
* @param columnIndex
|
|
|
|
|
* @param message
|
|
|
|
|
* @Return:
|
|
|
|
|
* @Author: 87966
|
|
|
|
|
* @Date: 2022/11/28 9:50
|
|
|
|
|
*/
|
|
|
|
|
private void putFailMap(Integer rowIndex, Integer columnIndex, String message) {
|
|
|
|
|
ExcelFailRecord excelFailRecord = new ExcelFailRecord();
|
|
|
|
|
int newRowIndex = rowIndex + 1;
|
|
|
|
@ -93,6 +126,15 @@ public class MyValidateExcelCellDataListener<T> implements ReadListener<T> {
|
|
|
|
|
failMap.put(rowIndex, excelFailRecord);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 功能描述: <br>
|
|
|
|
|
* 在所有解析结束之后要做的事情
|
|
|
|
|
* @Param:
|
|
|
|
|
* @param analysisContext
|
|
|
|
|
* @Return:
|
|
|
|
|
* @Author: 87966
|
|
|
|
|
* @Date: 2022/11/28 9:50
|
|
|
|
|
*/
|
|
|
|
|
@Override
|
|
|
|
|
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
|
|
|
|
|
log.info("Excel Deal Finish");
|