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();