From 0de1f71113abf2899213baf3ca7c80d052123e1d Mon Sep 17 00:00:00 2001 From: Jasonyou <2926593225@qq.com> Date: Sun, 24 Mar 2024 18:44:32 +0800 Subject: [PATCH] =?UTF-8?q?feat(ExcelRuntimeException):=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E8=A1=8C=E7=9A=84=E6=95=B0=E6=8D=AE=E8=BD=AC?= =?UTF-8?q?=E6=8D=A2=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/ModelBuildEventListener.java | 43 ++++++++++++++----- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/easyexcel-core/src/main/java/com/alibaba/excel/read/listener/ModelBuildEventListener.java b/easyexcel-core/src/main/java/com/alibaba/excel/read/listener/ModelBuildEventListener.java index c3fb3bc9..f4477c38 100644 --- a/easyexcel-core/src/main/java/com/alibaba/excel/read/listener/ModelBuildEventListener.java +++ b/easyexcel-core/src/main/java/com/alibaba/excel/read/listener/ModelBuildEventListener.java @@ -12,6 +12,7 @@ import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.enums.HeadKindEnum; import com.alibaba.excel.enums.ReadDefaultReturnEnum; import com.alibaba.excel.exception.ExcelDataConvertException; +import com.alibaba.excel.exception.ExcelDataConvertGroupException; import com.alibaba.excel.metadata.Head; import com.alibaba.excel.metadata.data.DataFormatData; import com.alibaba.excel.metadata.data.ReadCellData; @@ -25,6 +26,7 @@ import com.alibaba.excel.util.DateUtils; import com.alibaba.excel.util.MapUtils; import com.alibaba.excel.util.StringUtils; +import org.apache.commons.math3.exception.util.ExceptionContext; import org.springframework.cglib.beans.BeanMap; /** @@ -49,6 +51,8 @@ public class ModelBuildEventListener implements IgnoreExceptionReadListener map = MapUtils.newLinkedHashMapWithExpectedSize(cellDataMap.size()); + Integer rowIndex = context.readRowHolder().getRowIndex(); + ExcelDataConvertGroupException groupException = new ExcelDataConvertGroupException(rowIndex); for (Map.Entry> entry : cellDataMap.entrySet()) { Integer key = entry.getKey(); ReadCellData cellData = entry.getValue(); @@ -60,10 +64,14 @@ public class ModelBuildEventListener implements IgnoreExceptionReadListener convertedReadCellData = convertReadCellData(cellData, @@ -75,6 +83,9 @@ public class ModelBuildEventListener implements IgnoreExceptionReadListener headMap = excelReadHeadProperty.getHeadMap(); BeanMap dataMap = BeanMapUtils.create(resultModel); + Integer rowIndex = context.readRowHolder().getRowIndex(); + ExcelDataConvertGroupException groupException = new ExcelDataConvertGroupException(rowIndex ); for (Map.Entry entry : headMap.entrySet()) { Integer index = entry.getKey(); Head head = entry.getValue(); @@ -146,15 +159,23 @@ public class ModelBuildEventListener implements IgnoreExceptionReadListener cellData = cellDataMap.get(index); - Object value = ConverterUtils.convertToJavaObject(cellData, head.getField(), - ClassUtils.declaredExcelContentProperty(dataMap, readSheetHolder.excelReadHeadProperty().getHeadClazz(), - fieldName, readSheetHolder), readSheetHolder.converterMap(), context, - context.readRowHolder().getRowIndex(), index); - if (value != null) { - dataMap.put(fieldName, value); + + try { + ReadCellData cellData = cellDataMap.get(index); + Object value = ConverterUtils.convertToJavaObject(cellData, head.getField(), + ClassUtils.declaredExcelContentProperty(dataMap, readSheetHolder.excelReadHeadProperty().getHeadClazz(), + fieldName, readSheetHolder), readSheetHolder.converterMap(), context, + context.readRowHolder().getRowIndex(), index); + if (value != null) { + dataMap.put(fieldName, value); + } + }catch (ExcelDataConvertException e){ + groupException.addException(e); } } + if(!groupException.getGroup().isEmpty()){ + throw groupException; + } return resultModel; }