使用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; } }