Oracle 读取excel文件并保存到数据库?

Oracle 读取excel文件并保存到数据库?,oracle,excel,servlets,vector,apache-poi,Oracle,Excel,Servlets,Vector,Apache Poi,我正在读取Excel文件并将其保存到数据库中 double numericId = ((XSSFCell) cellStoreVector.get(0)).getNumericCellValue(); 我迭代每一行和单元格,并将其保存到vector对象,然后使用循环,将其保存到数据库。在保存it数据库时,我正在执行以下操作: id = ((XSSFCell) cellStoreVector.get(0)).toString()==null?"":((XSSFCell) cellStoreVec

我正在读取Excel文件并将其保存到数据库中

double numericId = ((XSSFCell) cellStoreVector.get(0)).getNumericCellValue();
我迭代每一行和单元格,并将其保存到vector对象,然后使用循环,将其保存到数据库。在保存it数据库时,我正在执行以下操作:

id = ((XSSFCell) cellStoreVector.get(0)).toString()==null?"":((XSSFCell) cellStoreVector.get(0)).toString();
对于每一列。除此之外,其他一切都很好,我的id是2.013562229E8。我不知道为什么我的id是2.013562229E8。应该是这样的201356229


谢谢。

这听起来像是Excel显示问题。Excel不知道您希望它是一个整数

您可能希望使其更宽选择整个列,右键单击,列宽。。。然后输入10


您还可以选择列,单击鼠标右键,设置单元格格式…,选择数字,将小数点改为0。

这不是Excel显示问题,因为该值已通过Apache POI提取到Java中。但是当调用XSSFCelltoString时,Apache POI代码使用以下表达式将类型为cell_type_NUMERIC的单元格转换为toString中的字符串:

该方法返回一个double,当转换为字符串时,将生成字符串2.01356229E8。这是预期的从双精度到字符串的Java转换,因为2.013562229E8是201356229的科学表示法。在数学中,表示法201356229和2.01356229E8是等效的

如果要保存到的Oracle数据库中的列是VARCHAR2,则需要在将字符串值保存到数据库之前对其进行格式化。这将在id中存储201356229:

如果列是一个数字,那么不必首先将其转换为字符串,只需使用数值单元格值作为双精度传递到数据库

double numericId = ((XSSFCell) cellStoreVector.get(0)).getNumericCellValue();

为什么在将数字写入数据库之前要将其转换为字符串?您不应该将它们存储为一个数字吗?
double numericId = ((XSSFCell) cellStoreVector.get(0)).getNumericCellValue();