excel 批量导入
parent
82bb59c870
commit
b1ce87e284
@ -1,79 +0,0 @@
|
|||||||
package cn.jlw.util.excel;
|
|
||||||
|
|
||||||
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 com.alibaba.excel.context.AnalysisContext;
|
|
||||||
import com.alibaba.excel.exception.ExcelDataConvertException;
|
|
||||||
import com.alibaba.excel.read.listener.ReadListener;
|
|
||||||
import com.alibaba.excel.read.metadata.holder.ReadRowHolder;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
@Data
|
|
||||||
@Slf4j
|
|
||||||
public class MyExcelCellDataListener<T> implements ReadListener<T> {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 数据集合
|
|
||||||
*/
|
|
||||||
private List<T> data = CollUtil.newArrayList();
|
|
||||||
|
|
||||||
private Map<Integer, ExcelFailRecord> failMap = MapUtil.newHashMap(16);
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void invoke(T bean, AnalysisContext context) {
|
|
||||||
boolean emptyRow = true;
|
|
||||||
List<Field> fieldList = Arrays.asList(ReflectUtil.getFields(bean.getClass()));
|
|
||||||
for (Field field : fieldList) {
|
|
||||||
field.setAccessible(true);
|
|
||||||
try {
|
|
||||||
Object fieldValue = field.get(bean);
|
|
||||||
if (fieldValue instanceof String) {
|
|
||||||
if (StrUtil.isNotBlank((String) fieldValue)) {
|
|
||||||
emptyRow = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (ObjectUtil.isNotNull(fieldValue)) {
|
|
||||||
emptyRow = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} catch (IllegalAccessException e) {
|
|
||||||
log.error(e.getMessage(), e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!emptyRow) {
|
|
||||||
// 不处理空数据行
|
|
||||||
data.add(bean);
|
|
||||||
ReadRowHolder readRowHolder = context.readRowHolder();
|
|
||||||
log.info("rowIndex: {}, rowType: {}", readRowHolder.getRowIndex(), readRowHolder.getRowType());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onException(Exception exception, AnalysisContext context) {
|
|
||||||
log.error(exception.getMessage(), exception);
|
|
||||||
if (exception instanceof ExcelDataConvertException) {
|
|
||||||
ExcelDataConvertException e = (ExcelDataConvertException) exception;
|
|
||||||
ExcelFailRecord excelFailRecord = new ExcelFailRecord();
|
|
||||||
excelFailRecord.setRow(e.getRowIndex());
|
|
||||||
excelFailRecord.setColumn(e.getColumnIndex());
|
|
||||||
excelFailRecord.setFailMessage(e.getCause().getMessage());
|
|
||||||
|
|
||||||
failMap.put(e.getRowIndex(), excelFailRecord);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
|
|
||||||
log.info("Excel Deal Finish");
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue