1. EasyExcel自定义数据转换
- EasyExcel 是阿里的一个用来读取和写入excel的库, 因为项目需要, 所以我需要从前端上传excel文件, 然后导入到数据库中
1.1 自定义转换类
- 因为我前端读取的是日期字符串, 但是实体类上的是日期类, 所以需要手动编写转换类进行转换
packagehbut.community.excel.converter;importcom.alibaba.excel.converters.Converter;importcom.alibaba.excel.converters.ReadConverterContext;importcom.alibaba.excel.converters.WriteConverterContext;importcom.alibaba.excel.enums.CellDataTypeEnum;importcom.alibaba.excel.metadata.data.WriteCellData;importlombok.extern.slf4j.Slf4j;importjava.text.SimpleDateFormat;importjava.util.Date;@Slf4jpublicclassCustomStringToDateConverterimplementsConverter<Date>{privateSimpleDateFormat format=newSimpleDateFormat("yyyy-MM-dd");@OverridepublicClass<?>supportJavaTypeKey(){returnConverter.super.supportJavaTypeKey();}@OverridepublicCellDataTypeEnumsupportExcelTypeKey(){returnConverter.super.supportExcelTypeKey();}/** * 从excel文件中读取的时候会调用, 返回的是 Date 类型的, 类型在 implements Converter<Date> 指定 * @param context * @return * @throws Exception */@OverridepublicDateconvertToJavaData(ReadConverterContext<?> context)throwsException{String stringValue= context.getReadCellData().getStringValue(); log.info(stringValue);return format.parse(stringValue);}}
convertToJavaData
这个方法的作用就是将字符串转换为日期类对象
1.2 实体类
- 使用时直接在字段上面指定即可
@DatapublicclassBgqkextendsAbstractExcel{/** * 内部序号 */@ExcelProperty(value="nbxh")privateString nbxh;/** * 变更事项 */@ExcelProperty("bgsx")privateString bgsx;/** * 变更日期 */@ExcelProperty(value="cqrq", converter=CustomStringToDateConverter.class)privateDate cqrq;/** * 当前数据日期 */@ExcelIgnoreprivateDate currentDate;}
2. Excel表字段问题
-
上图可以看到一个很明显的
nbxh(C|50)
后面的(C|50)
并不是表头, 在读取的时候应该是/** * 内部序号 */@ExcelProperty(value="nbxh")privateString nbxh;
-
字段映射应该是
nbxh
而并非是nbxh(C|50)
热门文章
- gateway聚合swagger3统一管理api文档
- 「2月10日」最高速度22.9M/S,2025年SSR/V2ray/Clash/Shadowrocket每天更新免费节点订阅链接
- 狗最忌讳的三个属相(狗忌讳什么属相)
- Windows环境下的NodeJS+NPM+Bower安装配置步骤
- 「2月15日」最高速度18.9M/S,2025年Shadowrocket/V2ray/Clash/SSR每天更新免费节点订阅链接
- C3P0反序列化链学习
- 品牌狗粮性价比高(狗粮性价比高的)
- 宠物医院写好评题材 宠物医院写好评题材怎么写
- 天然猫粮哪个牌子好(天然猫粮哪个牌子好吃)
- 有名的动物医院有哪些名字(高端的动物医院名字)