这不是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