这不是 Excel 显示问题,因为该值已使用 Apache POI 提取到 Java 中。但是当XSSFCell#toString()
被调用时,Apache POI 代码使用以下表达式将具有类型的单元格转换为CELL_TYPE_NUMERIC
in 中的字符串toString()
:
return getNumericCellValue() + "";
该XSSFCell#getNumericCellValue()
方法返回 a double
,将其转换为字符串时会生成字符串"2.01356229E8"
。这是预期的从 adouble
到 a的 Java 转换,String
因为"2.01356229E8"
它是201356229
. (在数学中,表示201356229
和2.01356229E8
是等价的。)
如果您要保存到的 Oracle 数据库中的列是 a VARCHAR2
,那么您需要在将字符串值保存到数据库之前对其进行格式化。这将存储"201356229"
在id
:
DecimalFormat df = new DecimalFormat("#");
id = df.format( ((XSSFCell) cellStoreVector.get(0)).getNumericCellValue() );
如果列是 a NUMBER
,则不要先将其转换为 String ,只需使用数字单元格值作为 adouble
传递给数据库。
double numericId = ((XSSFCell) cellStoreVector.get(0)).getNumericCellValue();