当前位置: 首页> 文旅> 旅游 > easyexcel--导入导出实现自定义格式转换

easyexcel--导入导出实现自定义格式转换

时间:2025/7/12 19:57:43来源:https://blog.csdn.net/ting4937/article/details/141326486 浏览次数:0次

自定义格式

我们在数据库设计的时候经常会有枚举类型,如0表示普通用户,1表示VIP用户等,这在excel导入的时候,我们会填普通用户而不是0,这样就需要用到自定义格式把普通用户转换成0,我写了一个通用的抽象类,只要继承这个抽象类就能很方便的实现数据转换

定义抽象类

public abstract class EnumStringConverter implements Converter<Integer> {public abstract String getExp();@Overridepublic Class<?> supportJavaTypeKey() {return String.class;}@Overridepublic CellDataTypeEnum supportExcelTypeKey() {return CellDataTypeEnum.STRING;}/*** 这里读的时候会调用** @param context* @return*/@Overridepublic Integer convertToJavaData(ReadConverterContext<?> context) {String exp = getExp();String val = StrUtils.convertByExp(context.getReadCellData().getStringValue(), exp, 1);if (StringUtils.isNotEmpty(val)) return Integer.parseInt(val);return null;}/*** 这里是写的时候会调用 不用管** @return*/@Overridepublic WriteCellData<?> convertToExcelData(WriteConverterContext<Integer> context) {String exp = getExp();if (context.getValue() != null) {String val = StrUtils.convertByExp(String.valueOf(context.getValue()), exp, 0);return new WriteCellData<>(val);}return new WriteCellData<>("");}
}
public class StrUtils {/*** 解析表达式 0:男,1:女,2:未知,根据0返回男或者男返回0** @param propertyValue 参数值* @param converterExp  表达式* @param separator     分隔符,例如逗号* @param assignment    分隔符,例如冒号* @param type          模式,0:根据0找男,1:根据男找0* @return 解析后值*/public static String convertByExp(String propertyValue, String converterExp, String separator, String assignment, int type) {// 根据separator切分成[0:男]String[] convertSource = converterExp.split(separator);for (String item : convertSource) {// 根据assignment切分成[0,男]String[] itemArray = item.split(assignment);if (itemArray.length < 2) throw new ServiceFailException("convertByExp字符串格式错误");if (type == 0) {if (itemArray[0].equals(propertyValue)) {return itemArray[1];}} else {if (itemArray[1].equals(propertyValue)) {return itemArray[0];}}}return "";}public static String convertByExp(String propertyValue, String converterExp, int type) {return convertByExp(propertyValue, converterExp, ",", ":", type);}public static String convertByExp(String propertyValue, String converterExp) {return convertByExp(propertyValue, converterExp, 0);}
}

定义继承类

我们只要按照0:普通用户这个格式提供表达式,转换类就能把0转换成普通用户

public class UserEnumConverter extends EnumStringConverter {@Overridepublic String getExp() {return "0:普通用户,1:VIP用户,2:管理员";}
}

加上自定义格式注解

    @ExcelProperty(value = "类型", converter = UserEnumConverter.class)private Integer type;

效果

数据库存储

导出样式,把0转成普通用户了

导入效果,把普通用户转成0了,导入导出都实现了完美转换

关键字:easyexcel--导入导出实现自定义格式转换

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: