POI 讀取Excel,日期格式錯誤,讀取為數值型問題

這個問題網上有許多解決方法:

  1. 讀取的數值為1900年距離日期的天數,調用calander api從1900年加天數即可得到真正的日期時間,具體可參考:
    https://blog.csdn.net/weixin_39800144/article/details/78668579

但是此方法并不適用我現有業務,我這邊讀取excel是公共方法類,遍歷每一個單元格,不可能把讀取為Cell.CELL_TYPE_NUMERIC格式的單元格都做日期化處理;所以放棄此種做法


  1. 其實Cell對象有getDateCellValue()方法,也就是專門針對日期獲取的方法,所以應該如何判斷出Cell對象數值為日期類型,其實CELL_TYPE_NUMERIC類型下還有具體分類,再次判斷分類為日期類型:
 @SuppressWarnings("static-access")
    private static String getValue(Cell cell) {
        if (cell.getCellType() == cell.CELL_TYPE_BOOLEAN) {
            return String.valueOf(cell.getBooleanCellValue());
        } else if (cell.getCellType() == cell.CELL_TYPE_NUMERIC) {
            //數值類型又具體區分日期類型,單獨處理
            if (HSSFDateUtil.isCellDateFormatted(cell)) {
                Date date = cell.getDateCellValue();
                return DateJodaUtils.getDateStr(date, "yyyy-MM-dd");
            } else {
                return NumberToTextConverter.toText(cell.getNumericCellValue());
            }
        } else {
            return String.valueOf(cell.getStringCellValue());
        }
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。