这不是 Excel 显示问题,因为该值已使用 Apache POI 提取到 Java 中。但是当XSSFCell#toString()被调用时,Apache POI 代码使用以下表达式将具有类型的单元格转换为CELL_TYPE_NUMERICin 中的字符串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();