本文已参与「新人创作礼」活动,一起开启掘金创作之路。
使用 EasyExcel 导出时自定义支付类型转换
夜坐听风
书接上文说到,我们通过 操作 EasyExcel 转换器对导出时的时间类型做了处理;本文将通过自定义类型转换器对导出时的支付类型进行相关操作。
昼眠听雨
支付类型枚举类:
@AllArgsConstructor
@Getter
public enum PayTypeEnum {
WX_WITHOUT_PWD_PAY(1, "微信无感支付"),
WX_JSAPI(2, "微信小程序支付"),
WX_NATIVE(3, "微信正扫"),
WX_PAY_CODE(4, "微信反扫"),
ALIPAY_H5(5, "支付宝h5支付"),
ALIPAY_MP(6, "支付宝小程序支付"),
UNION_AUTO_PAY(7, "银联无感支付"),
ALIPAY_NATIVE(8, "支付宝正扫"),
ALIPAY_PAY_CODE(9, "支付宝反扫"),
POS(10, "pos机支付"),
CASH(11, "现金支付"),
CARD(12, "加油卡支付"),
ARREARAGE(13,"欠款"),
Recharge(14,"回罐"),
Own_Oil(15,"自用油"),
Accident_Write_Off(16,"事故核销"),
BANK_CARD(17, "刷卡"),
WX_H5(20, "微信公众号支付"),
;
private int value;
private String desc;
}
自定义支付类型转换器:
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import com.shufei.gasstation.enums.PayTypeEnum;
/**
* 自定义支付方式转换器
*
* @author Greenarrow
*/
public class PayTypeConverter implements Converter<Integer> {
@Override
public Class supportJavaTypeKey() {
return Integer.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public Integer convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
if (cellData.getStringValue().equals(PayTypeEnum.WX_WITHOUT_PWD_PAY.getDesc())){
return PayTypeEnum.WX_WITHOUT_PWD_PAY.getValue();
}if (cellData.getStringValue().equals(PayTypeEnum.WX_JSAPI.getDesc())){
return PayTypeEnum.WX_JSAPI.getValue();
}if (cellData.getStringValue().equals(PayTypeEnum.WX_NATIVE.getDesc())){
return PayTypeEnum.WX_NATIVE.getValue();
}if (cellData.getStringValue().equals(PayTypeEnum.WX_PAY_CODE.getDesc())){
return PayTypeEnum.WX_PAY_CODE.getValue();
}if (cellData.getStringValue().equals(PayTypeEnum.ALIPAY_H5.getDesc())){
return PayTypeEnum.ALIPAY_H5.getValue();
}if (cellData.getStringValue().equals(PayTypeEnum.ALIPAY_MP.getDesc())){
return PayTypeEnum.ALIPAY_MP.getValue();
}if (cellData.getStringValue().equals(PayTypeEnum.UNION_AUTO_PAY.getDesc())){
return PayTypeEnum.UNION_AUTO_PAY.getValue();
}if (cellData.getStringValue().equals(PayTypeEnum.ALIPAY_NATIVE.getDesc())){
return PayTypeEnum.ALIPAY_NATIVE.getValue();
}if (cellData.getStringValue().equals(PayTypeEnum.ALIPAY_PAY_CODE.getDesc())){
return PayTypeEnum.ALIPAY_PAY_CODE.getValue();
}if (cellData.getStringValue().equals(PayTypeEnum.POS.getDesc())){
return PayTypeEnum.POS.getValue();
}if (cellData.getStringValue().equals(PayTypeEnum.CASH.getDesc())){
return PayTypeEnum.CASH.getValue();
}if (cellData.getStringValue().equals(PayTypeEnum.CARD.getDesc())){
return PayTypeEnum.CARD.getValue();
}if (cellData.getStringValue().equals(PayTypeEnum.ARREARAGE.getDesc())){
return PayTypeEnum.ARREARAGE.getValue();
}if (cellData.getStringValue().equals(PayTypeEnum.Recharge.getDesc())){
return PayTypeEnum.Recharge.getValue();
}if (cellData.getStringValue().equals(PayTypeEnum.Own_Oil.getDesc())){
return PayTypeEnum.Own_Oil.getValue();
}if (cellData.getStringValue().equals(PayTypeEnum.Accident_Write_Off.getDesc())){
return PayTypeEnum.Accident_Write_Off.getValue();
}if (cellData.getStringValue().equals(PayTypeEnum.BANK_CARD.getDesc())){
return PayTypeEnum.BANK_CARD.getValue();
}if (cellData.getStringValue().equals(PayTypeEnum.WX_H5.getDesc())){
return PayTypeEnum.WX_H5.getValue();
}
return null;
}
@Override
public CellData convertToExcelData(Integer value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
if (value.equals(PayTypeEnum.WX_WITHOUT_PWD_PAY.getValue())){
return new CellData(PayTypeEnum.WX_WITHOUT_PWD_PAY.getDesc());
}if (value.equals(PayTypeEnum.WX_JSAPI.getValue())){
return new CellData(PayTypeEnum.WX_JSAPI.getDesc());
}if (value.equals(PayTypeEnum.WX_NATIVE.getValue())){
return new CellData(PayTypeEnum.WX_NATIVE.getDesc());
}if (value.equals(PayTypeEnum.WX_PAY_CODE.getValue())){
return new CellData(PayTypeEnum.WX_PAY_CODE.getDesc());
}if (value.equals(PayTypeEnum.ALIPAY_H5.getValue())){
return new CellData(PayTypeEnum.ALIPAY_H5.getDesc());
}if (value.equals(PayTypeEnum.ALIPAY_MP.getValue())){
return new CellData(PayTypeEnum.ALIPAY_MP.getDesc());
}if (value.equals(PayTypeEnum.UNION_AUTO_PAY.getValue())){
return new CellData(PayTypeEnum.UNION_AUTO_PAY.getDesc());
}if (value.equals(PayTypeEnum.ALIPAY_NATIVE.getValue())){
return new CellData(PayTypeEnum.ALIPAY_NATIVE.getDesc());
}if (value.equals(PayTypeEnum.ALIPAY_PAY_CODE.getValue())){
return new CellData(PayTypeEnum.ALIPAY_PAY_CODE.getDesc());
}if (value.equals(PayTypeEnum.POS.getValue())){
return new CellData(PayTypeEnum.POS.getDesc());
}if (value.equals(PayTypeEnum.CASH.getValue())){
return new CellData(PayTypeEnum.CASH.getDesc());
}if (value.equals(PayTypeEnum.CARD.getValue())){
return new CellData(PayTypeEnum.CARD.getDesc());
}if (value.equals(PayTypeEnum.ARREARAGE.getValue())){
return new CellData(PayTypeEnum.ARREARAGE.getDesc());
}if (value.equals(PayTypeEnum.Recharge.getValue())){
return new CellData(PayTypeEnum.Recharge.getDesc());
}if (value.equals(PayTypeEnum.Own_Oil.getValue())){
return new CellData(PayTypeEnum.Own_Oil.getDesc());
}if (value.equals(PayTypeEnum.Accident_Write_Off.getValue())){
return new CellData(PayTypeEnum.Accident_Write_Off.getDesc());
}if (value.equals(PayTypeEnum.BANK_CARD.getValue())){
return new CellData(PayTypeEnum.BANK_CARD.getDesc());
}if (value.equals(PayTypeEnum.WX_H5.getValue())){
return new CellData(PayTypeEnum.WX_H5.getDesc());
}
return null;
}
}
然后在相应的实体类上添加如下内容:
@ExcelProperty(value = "支付方式",converter = PayTypeConverter.class)
private Integer payType;
月如何缺,天如何老
EasyExcel 种这样的类型转换操作其实有很多种方式,这两篇文章只是介绍了一种方式。
- END -