1.遇到日期导入转换Date失败情况
excel里面日期是字符串,java实体类和数据库都是日期类型
导入转换
public class EasyExcelString2DateConvert implements Converter<Date> { // 指定转化参数的Java类型 @Override public Class<?> supportJavaTypeKey() { return String.class; } // 指定转化参数对应的单元格类型 @Override public CellDataTypeEnum supportExcelTypeKey() { return CellDataTypeEnum.STRING; } // 单元格参数类型转化为Java类型处理逻辑 @Override public Date convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { //多种模式 待添加 if(StringUtil.isDate0(cellData.getStringValue())){ return DateUtils.parseDate(cellData.getStringValue(),"yyyyMMdd"); } if(StringUtil.isDateTime(cellData.getStringValue())){ return DateUtils.parseDate(cellData.getStringValue(),"yyyyMMdd HH:mm:ss"); } return DateUtils.parseDate(cellData.getStringValue(),"yyyy/MM/dd"); } }
2.在实体类里面注解ExcelProperty加入
@TableField("交易时间") @ExcelProperty(value = "交易时间",converter = EasyExcelString2DateConvert.class) @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date 交易时间;
然后导入
EasyExcel.read(file.getInputStream(), Abc.class, new EasyExcelListener<Abc>(abcService) ).sheet().doReadSync();