SpringBoot在使用EasyExcel时 会出现部分数据类型在导出时EasyExcel不支持的情况,这个时候可以自定义转换器手动注入。
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import org.springframework.stereotype.Component;
/**
* @author zxb 2022/4/12 17:52
*/
@Component
public class CharConverter implements Converter<Character> {
/**
* 开启对 Character 类型的支持
*/
@Override
public Class<?> supportJavaTypeKey() {
return Character.class;
}
/**
* 自定义对 Character 类型数据的处理
* 我这里就拿 String 去包装了下
*/
@Override
public WriteCellData<?> convertToExcelData(Character value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
return new WriteCellData<Character>(String.valueOf(value));
}
}
定义完自定义 convert 后,需要在写操作时,将 convert 注册到 EasyExcel 中去。
@RequestMapping(path = "/writeStudentToExcel", method = RequestMethod.GET)
public Result writeStudentToExcel() {
String fileName = "E:\\" + "simpleWrite" + System.currentTimeMillis() + ".xlsx";
List<Student> studentList = listAllStudent();
log.info("{}",studentList);
EasyExcel.write(fileName, Student.class).registerConverter(new CharConverter()).sheet("sheet1").doWrite(studentList);
return Result.success();
}