我正在解析excel文件中的数据并使用HSSFCell
将其添加到我的数据库来解析Excel文件,我使用以下代码来读取文件
public void printCellDataToConsole(Vector dataHolder) throws SQLException {
// this is for the rows in the file, set to one to skip the headings
List<String> studentInformation = new ArrayList<>();
for (int i = 1; i < dataHolder.size(); i++) {
Vector cellStoreVector = (Vector) dataHolder.elementAt(i);
// this is for the colums in the table
for (int j = 0; j < cellStoreVector.size(); j++) {
HSSFCell myCell = (HSSFCell) cellStoreVector.elementAt(j);
String stringCellValue = myCell.toString();
System.out.print(stringCellValue + "\t");
}
connectToDatabase.ammendTableInDatabase("INSERT INTO Student VALUES (" + cellStoreVector.get(0) + ",'" + cellStoreVector.get(1) + "','" + cellStoreVector.get(2) + "','" + cellStoreVector.get(3) + "','" + cellStoreVector.get(4) + "'," + cellStoreVector.get(5) + ",'" + cellStoreVector.get(6) + "')");
System.out.println();
}
}
一切正常,但当我尝试阅读以下
之类的任何值时111223361
111223362
111223364
111223363
111223366
它将它们读作以下
1.11223361E8
1.11223362E8
1.11223364E8
1.11223363E8
1.11223366E8
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:2)
1.11223361E8
表示1.11223361 x (10 ^ 8)
,所以111223361 = 1.11223361E8
...
如果您希望格式良好,请使用Double.valueOf("1.11223361E8").longValue()
。
答案 1 :(得分:1)
尝试使用:
cellValueLong = Long.valueOf(myCell.toString());
几周前我自己也遇到了同样的问题。发生这种情况是因为您作为字符串提取的数字是科学记数法格式。因为你把它作为一个字符串而不是long / int /(无论如何),它会以该格式返回该数字的字符串值。
答案 2 :(得分:0)
从excel sheet获取值。这是最好的解决方案。它可以帮助你。