EasyExcel 时间格式转换 取时间格式为数字解决办法

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

 

posted @ 2022-03-25 16:55  roychenyi  阅读(4141)  评论(1编辑  收藏  举报