這不是Excel顯示問題,因爲該值已經通過Apache POI提取到Java中。但是,當XSSFCell#toString()
被調用時,在Apache POI代碼使用以下表達式來使細胞與CELL_TYPE_NUMERIC
類型轉換爲字符串在toString()
:
return getNumericCellValue() + "";
的XSSFCell#getNumericCellValue()
方法返回double
,其當轉換爲一個字符串產生了串"2.01356229E8"
。這是從double
到String
的預期Java轉換,因爲"2.01356229E8"
是201356229
的科學記數法表示。 (在數學中,表示201356229
和2.01356229E8
是等價的。)
如果您正在保存到Oracle數據庫中的列是VARCHAR2
,那麼你就需要把它保存到數據庫之前格式化字符串值。這將存儲在"201356229"
id
:
DecimalFormat df = new DecimalFormat("#");
id = df.format(((XSSFCell) cellStoreVector.get(0)).getNumericCellValue());
如果列是NUMBER
,那就不必首先將其轉換爲字符串,只使用數字單元格值作爲double
要傳遞到數據庫。
double numericId = ((XSSFCell) cellStoreVector.get(0)).getNumericCellValue();
爲什麼在將數據寫入數據庫之前將數字轉換爲字符串?你不應該將它們存儲爲一個數字嗎? – Gagravarr 2013-04-10 09:09:13