使用 EasyExcel 进行 Excel 读写时,报错:Can not find 'Converter' support class xxx.
默认的Converter无法转xxx类,需要自己写个Converter
我遇到的问题是,查询到的list中有个字段private List<PlatformRole> roleList,报错无法解析JSONArray
解决办法:添加自定义Converter,自己转换JSONArray
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import com.alibaba.fastjson2.JSONArray;
public class ExcelJSONArrayStringConverter implements Converter<JSONArray> {
@Override
public Class<JSONArray> supportJavaTypeKey() {
return JSONArray.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public WriteCellData<?> convertToExcelData(JSONArray jsonArray, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
return new WriteCellData<>(jsonArray.toJSONString());
}
}
再把ExcelJSONArrayStringConverter,注册到ExcelWriter中
// 写入文件流,这里是写入到response的输出流,也可以写入到文件流,也可以写入到其他流中
ExcelWriterBuilder write = response != null ? EasyExcel.write(response.getOutputStream()) : EasyExcel.write(fileName);
// 支持JSONArray字段,直接转成String
write.registerConverter(new ExcelJSONArrayStringConverter());