使用EasyExcel 读取时间格式的单元格,变成了数字
单元格的数据这个日期
读取的数据却是一个数值:
如,我们想要转换的参数:
@ExcelProperty(value = "到期日", index = 3, converter = LocalDateConverter.class) @ApiModelProperty("到期日") @JsonFormat( shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd" ) private LocalDate dueDt;
读取到的值是数字,如下图
easyExcel在解析时 该字段类型为Number. 值是从1900年1月1日到这一天的日期,所以添加解析器
@Override public LocalDate convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { if (cellData.getType().equals(CellDataTypeEnum.NUMBER)) { LocalDate localDate = LocalDate.of(1900, 1, 1);
//excel 有些奇怪的bug, 导致日期数差2 localDate = localDate.plusDays(cellData.getNumberValue().longValue() - 2); return localDate; } else if (cellData.getType().equals(CellDataTypeEnum.STRING)) { return LocalDate.parse(cellData.getStringValue(), DateTimeFormatter.ofPattern("yyyy-MM-dd")); } else { return null; } }