Java& Excel:读取错误的值

时间:2012-09-10 10:03:25

标签: java excel parsing apache-poi

我正在解析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

为什么会发生这种情况,我该如何解决?

3 个答案:

答案 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获取值。这是最好的解决方案。它可以帮助你。

https://stackoverflow.com/a/12067137/1211000