ExcelDataConvertException:Can not find ‘Converter‘ support class ArrayList

3,265 阅读1分钟

问题描述: com.alibaba.excel.exception.ExcelDataConvertException: Can not find 'Converter' support class ArrayList.

问题分析: 1、查看doWrite(List data)的源码时发现Converter接口的convertToExcelData只实现了转换BigDecimal、Bolean、Byte[]、btye[]、Byte、Date、Double、File、Float、InputStream、Integer、Long、Short、URL几种类型,意味着参数data最多只能是个二维数据,并且二维数据的基数据类型必须为convertToExcelData能转换的类型,而我注入的参数类型为List<List<Object>> 并且Object为ArrayList所以导致转换不了报错。

解决办法:

自定义类型转换器,具体做法可以查看以下博客。

EasyExcel 自定义类型转换器Converter blog.csdn.net/qq_38974638…


    public Class<ArrayList> supportJavaTypeKey() {
        return ArrayList.class;
    }

    @Override
    public WriteCellData<String> convertToExcelData(ArrayList list, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
        return new WriteCellData<>(StringUtils.join(list, ","));
    }
}

我这里只是导出,所以就没有重写导入的转换方法, 注意:刚开始定义转换类型List,但是这里一直不生效,最后定义ArrayList后才生效,个人分析我这里List<List<Object>>并且Object为ArrayList类型,这里转换的时候只能是ArrayList来接收,如果是List<List<ArrayList<自定义对象>>> 自定义类型转换注册到具体的某个字段上,就不存在这样的问题!