Java 爪哇及;Excel:读取的值错误

Java 爪哇及;Excel:读取的值错误,java,excel,parsing,apache-poi,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>

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

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

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


如果您想将其格式化,请使用Double.valueOf(“1.11223361E8”).longValue()
1.11223361E8
表示
1.11223361x(10^8)
,因此
111223361=1.11223361E8

如果要使其格式正确,请使用Double.valueOf(“1.11223361E8”).longValue()

尝试使用:

cellValueLong = Long.valueOf(myCell.toString());
几周前我自己也面临同样的问题。之所以会发生这种情况,是因为您作为字符串附加的数字是以科学记数法格式提供的。因为它是一个字符串,而不是长/int/(无论什么),所以它以该格式返回该数字的字符串值。

尝试使用:

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

几周前我自己也面临同样的问题。之所以会发生这种情况,是因为您作为字符串附加的数字是以科学记数法格式提供的。因为它是一个字符串,而不是长/int/(无论什么),所以它以该格式返回该数字的字符串值。

用于从excel工作表中获取值。这是最好的解决方案。它可能有助于


用于从excel工作表中获取值。这是最好的解决方案。它可能会帮助您


因为我也对从Excel文件中读取值感兴趣,所以您使用什么框架来执行此操作?我猜是POI,因为提到了HSSFCell。我推荐Andy Khan的Jetcel而不是POI。@记者:我用
POI-3.8-20120326.jar
解析excel文件,你还想知道什么吗?@duffymo:Jetcel支持新的数据格式吗?提到JExel不支持新版本。(可能是需要一个tweek的答案)因为我也对从Excel文件中读取值感兴趣,所以您使用什么框架来执行此操作?POI是我的猜测,因为提到了HSSFCell。我推荐Andy Khan的Jetcel而不是POI。@记者:我用
POI-3.8-20120326.jar
解析excel文件,你还想知道什么吗?@duffymo:Jetcel支持新的数据格式吗?提到JExel不支持新版本。(答案可能需要一个tweek)我尝试了此操作,但myCell.Value提供了以下内容:找不到符号符号:变量值位置:类型为org.apache.poi.hssf.usermodel.HSSFCellI的变量myCell尝试了此操作,但myCell.Value提供了以下内容:找不到符号符号符号:变量值位置:类型为org.apache.poi.hssf.usermodel.HSSFCellyes的变量myCell这解决了问题,并感谢您解释为什么数字以其格式出现:)是的,这解决了问题,感谢您解释为什么数字以其格式出现:)