Skip to content

写入自定义转化

清沐 edited this page Sep 25, 2021 · 2 revisions

简单映射

该功能仅针对DefaultExcelBuilder、DefaultStreamExcelBuilder。

导出经常遇到的一个场景:导出数据包含可枚举字段,如性别,存储在数据库中以0、1,导出为男、女。

@ExcelColumn(title="性别",mapping="0:男,1:女")
Integer gender;

使用 mapping 属性,以 , 分隔成组,每组以 :分隔,需要注意的是,该属性仅支持简单映射,不支持含有:,,特殊字符的映射

自定义转化

存在部分场景,如需要读取数据库来决定转化,则简单映射无法满足,此时需要自定义转化,步骤如下:

// 1.实现com.github.liaochong.myexcel.core.converter.CustomWriteConverter接口
public class DefaultCustomWriteConverter implements CustomWriteConverter<Object, Object> {
    // 支持Spring
    @Autowired
    private MyConverter myConverter;

    @Override
    public Object convert(Object originalData, CustomWriteContext customWriteContext) {
        return originalData;
    }
}
// 2.使用注解
@ExcelColumn(writeConverter = DefaultCustomWriteConverter.class)

// 3.如使用了spring等,则需要绑定上下文,如无,则无需使用binding
@Autowired
private DefaultCustomWriteConverter defaultCustomWriteConverter;

DefaultStreamExcelBuilder.of(CommonPeople.class).binding(defaultCustomWriteConverter).start();
Clone this wiki locally