在Excel中的日期格式,比如2009-12-24將其轉化為數字格式時變成了40171,在用java處理的時候,讀取的也將是40171。如果使用POI處理Excel中的日期型別的單元格時,如果僅僅是判斷它是否為日期型別的話,最終會以NUMERIC型別來處理。正確的處理方法是先判斷單元格的型別是否則NUMERIC型別,然後再判斷單元格是否為日期格式,如果是的話,建立一個日期格式,再將單元格的內容以這個日期格式顯示出來。如果單元格不是日期格式,那麼則直接得到NUMERIC的值就行了。具體程式碼如下:if (0 == cell.getCellType()) {//判斷是否為日期型別if(HSSFDateUtil.isCellDateFormatted(cell)){//用於轉化為日期格式Date d = cell.getDateCellValue();DateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");str[k] = formater.format(d);}else{// 用於格式化數字,只保留數字的整數部分DecimalFormat df = new DecimalFormat("########");str[k] = df.format(cell.getNumericCellValue());}
在Excel中的日期格式,比如2009-12-24將其轉化為數字格式時變成了40171,在用java處理的時候,讀取的也將是40171。如果使用POI處理Excel中的日期型別的單元格時,如果僅僅是判斷它是否為日期型別的話,最終會以NUMERIC型別來處理。正確的處理方法是先判斷單元格的型別是否則NUMERIC型別,然後再判斷單元格是否為日期格式,如果是的話,建立一個日期格式,再將單元格的內容以這個日期格式顯示出來。如果單元格不是日期格式,那麼則直接得到NUMERIC的值就行了。具體程式碼如下:if (0 == cell.getCellType()) {//判斷是否為日期型別if(HSSFDateUtil.isCellDateFormatted(cell)){//用於轉化為日期格式Date d = cell.getDateCellValue();DateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");str[k] = formater.format(d);}else{// 用於格式化數字,只保留數字的整數部分DecimalFormat df = new DecimalFormat("########");str[k] = df.format(cell.getNumericCellValue());}