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