使用easyExcel工具处理导入导出字段时,可能会涉及某些字段特殊处理,比如枚举处理,可以使用自定义格式转换来实现。
1、编写自定义格式处理类(转换器)
/**
* @Author
* @Date
* @Desciption: 格式化:0-否,1-是,416-读取到的其他非法值
*/
public class YesOrNoConverter implements Converter<Integer> {
@Override
public Class<Integer> supportJavaTypeKey() {
return Integer.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public Integer convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
if("是".equals(cellData.getStringValue())){
return 1;
}
if("否".equals(cellData.getStringValue())){
return 0;
}else return 416;
}
@Override
public WriteCellData<String> convertToExcelData(Integer integer, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
if(integer.equals(0)){
return new WriteCellData<>("否");
}
if(integer.equals(1)){
return new WriteCellData<>("是");
}else return new WriteCellData<>("非法值");
}
}
2、在对应实体类字段表头注解内标明自定义处理器类:
public class CustExcelDTO {
@ExcelProperty(value = "客户名称")
@ApiModelProperty(value = "客户名称")
private String custName;
@ExcelProperty(value = "联系电话")
@ApiModelProperty(value = "联系电话")
private String phoneNumber;
@ExcelProperty(value = "身份证号码")
@ApiModelProperty(value = "身份证")
private String identityNo;
@ExcelProperty(value = "出生日期")
@ApiModelProperty(value = "出生日期")
private String birthDate;
@ExcelProperty(value = "年龄")
@ApiModelProperty(value = "年龄")
private Integer age;
@ExcelProperty(value = "是否有房产", converter = YesOrNoConverter.class)
@ApiModelProperty(value = "是否有房产(0:否、1:是)")
private Integer hasHouse;
}