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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM