0

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

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

4

3 回答 3

3

1.11223361E8意思是1.11223361 x (10 ^ 8),所以111223361 = 1.11223361E8...

如果您想获得良好的格式,请使用Double.valueOf("1.11223361E8").longValue().

于 2012-09-10T10:07:47.750 回答
1

尝试使用:

cellValueLong = Long.valueOf(myCell.toString());

几周前我自己也遇到了同样的问题。发生这种情况是因为您作为字符串提取的数字采用科学记数法格式。并且由于您将其作为字符串而不是 long/int/(whatever) 获取,因此它以该格式返回该数字的字符串值。

于 2012-09-10T10:08:36.480 回答
0

从 excel 表中获取值。这是最好的解决方案。它可以帮助你。

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

于 2012-09-10T12:49:14.027 回答