问题描述
Easy Excel导入文件时报错
com.alibaba.excel.exception.ExcelDataConvertException: Converter not found, convert STRING to java.util.List
at com.alibaba.excel.util.ConverterUtils.doConvertToJavaObject(ConverterUtils.java:149)
at com.alibaba.excel.util.ConverterUtils.convertToJavaObject(ConverterUtils.java:100)
at com.alibaba.excel.read.listener.ModelBuildEventListener.buildUserModel(ModelBuildEventListener.java:103)
at com.alibaba.excel.read.listener.ModelBuildEventListener.invoke(ModelBuildEventListener.java:41)
at com.alibaba.excel.read.listener.ModelBuildEventListener.invoke(ModelBuildEventListener.java:26)
at com.alibaba.excel.read.processor.DefaultAnalysisEventProcessor.dealData(DefaultAnalysisEventProcessor.java:99)
at com.alibaba.excel.read.processor.DefaultAnalysisEventProcessor.endRow(DefaultAnalysisEventProcessor.java:46)
at com.alibaba.excel.analysis.v07.handlers.RowTagHandler.endElement(RowTagHandler.java:46)
at com.alibaba.excel.analysis.v07.handlers.sax.XlsxRowHandler.endElement(XlsxRowHandler.java:91)
解决方案:
编写自定义转换器
class CustomStringStringConverter implements Converter<List> {
@Override
public Class<List> supportJavaTypeKey() {
return List.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
/**
* 这里读的时候会调用
*
* @param context
* @return
*/
@Override
public List convertToJavaData(ReadConverterContext<?> context) {
List list=new ArrayList();
list.add(context.getReadCellData().getStringValue());
return list;
}
}
在读文件的地方加上registerConverter(new CustomStringStringConverter())
EasyExcel.read(is, SWRTData.class, uploadDataListener).registerConverter(new CustomStringStringConverter()).sheet().doRead();