Browse Source

Merge 71e177d67c into aae9c61ab6

pull/4092/merge
icoco 1 month ago committed by GitHub
parent
commit
9c1bb6a8f6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 14
      easyexcel-core/src/main/java/com/alibaba/excel/read/listener/ModelBuildEventListener.java
  2. 22
      easyexcel-core/src/main/java/com/alibaba/excel/util/ConverterUtils.java

14
easyexcel-core/src/main/java/com/alibaba/excel/read/listener/ModelBuildEventListener.java

@ -56,11 +56,17 @@ public class ModelBuildEventListener implements IgnoreExceptionReadListener<Map<
ReadDefaultReturnEnum readDefaultReturn = context.readWorkbookHolder().getReadDefaultReturn();
if (readDefaultReturn == ReadDefaultReturnEnum.STRING) {
// string
map.put(key,
(String)ConverterUtils.convertToJavaObject(cellData, null, null, readSheetHolder.converterMap(),
context, context.readRowHolder().getRowIndex(), key));
// map.put(key,
// (String)ConverterUtils.convertToJavaObject(cellData, null, null, readSheetHolder.converterMap(),
// context, context.readRowHolder().getRowIndex(), key));
String val = (String)ConverterUtils.convertToJavaObject(cellData, null, null, readSheetHolder.converterMap(),
context, context.readRowHolder().getRowIndex(), key);
if (null != val) {
map.put(key, val);
}
} else {
// retrun ReadCellData
// return ReadCellData
ReadCellData<?> convertedReadCellData = convertReadCellData(cellData,
context.readWorkbookHolder().getReadDefaultReturn(), readSheetHolder, context, key);
if (readDefaultReturn == ReadDefaultReturnEnum.READ_CELL_DATA) {

22
easyexcel-core/src/main/java/com/alibaba/excel/util/ConverterUtils.java

@ -17,12 +17,14 @@ import com.alibaba.excel.metadata.data.CellData;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import com.alibaba.excel.read.metadata.holder.ReadSheetHolder;
import lombok.extern.slf4j.Slf4j;
/**
* Converting objects
*
* @author Jiaju Zhuang
**/
@Slf4j
public class ConverterUtils {
public static Class<?> defaultClassGeneric = String.class;
@ -81,12 +83,24 @@ public class ConverterUtils {
* @param columnIndex
* @return
*/
public static Object convertToJavaObject(ReadCellData<?> cellData, Field field,
public static Object _convertToJavaObject(ReadCellData<?> cellData, Field field,
ExcelContentProperty contentProperty, Map<ConverterKey, Converter<?>> converterMap, AnalysisContext context,
Integer rowIndex, Integer columnIndex) {
return convertToJavaObject(cellData, field, null, null, contentProperty, converterMap, context, rowIndex,
columnIndex);
}
//eat exception, make the workflow continue not quite~
public static Object convertToJavaObject(ReadCellData<?> cellData, Field field,
ExcelContentProperty contentProperty, Map<ConverterKey, Converter<?>> converterMap, AnalysisContext context,
Integer rowIndex, Integer columnIndex) {
try {
return convertToJavaObject(cellData, field, null, null, contentProperty, converterMap, context, rowIndex,
columnIndex);
}catch (Exception ex){
log.error("Failed ConvertToJavaObject, error:{}",ex);
}
return null;
}
/**
* Convert it into a Java object
@ -181,7 +195,11 @@ public class ConverterUtils {
return converter.convertToJavaData(new ReadConverterContext<>(cellData, contentProperty, context));
} catch (Exception e) {
throw new ExcelDataConvertException(rowIndex, columnIndex, cellData, contentProperty,
"Convert data " + cellData + " to " + clazz + " error ", e);
"Convert data " + toDebugString(cellData) + " to " + clazz + " error ", e);
}
}
private static String toDebugString(ReadCellData cellData){
String buf = BeanMapUtils.create(cellData).toString();
return buf;
}
}

Loading…
Cancel
Save