POI操作Excel時偶爾會出現Cannot get a text value from a numeric cell的異常錯誤。
報錯代碼:
Date dd = cell.getDateCellValue();
報錯如圖:
網上解釋:
異常原因:Excel數據Cell有不同的類型,當我們試圖從一個數字類型的Cell讀取出一個字符串並寫入數據庫時,就會出現Cannot get a text value from a numeric cell的異常錯誤。
解決辦法:先設置Cell的類型,然後就可以把純數字作爲String類型讀進來了:
if(row.getCell(0)!=null){
row.getCell(0).setCellType(Cell.CELL_TYPE_STRING);
stuUser.setPhone(row.getCell(0).getStringCellValue());
}
更改後:
cell.setCellType(Cell.CELL_TYPE_NUMERIC);
Date dd = cell.getDateCellValue();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
content = sdf.format(dd);
出現了其他問題
調試的時候發現了其他問題,cell.setCellType(Cell.CELL_TYPE_NUMERIC);之後,原先Cell有數據變得沒有值了,cell.getDateCellValue();取值的時候變成了空值。
最終解決辦法
最終查到了正確的解決辦法:
DataFormatter formatter = new DataFormatter();
String time = formatter.formatCellValue(cell);
這個time就是取到的值。再進行其他類型轉換存入到數據庫即可!