使用JAVA从Excel中检索INTEGER值

我的目标是读取一个使用POI的excel文件,并打印出其中的值。 如果值是5,那么我的输出必须是5,但它返回为5.0。 下面是我试过的代码。

FileInputStream fileInputStream = null; XSSFSheet xssfResultSheet = null; String filePath = "C:\\MyXcel.xlsx"; fileInputStream = new FileInputStream(new File(filePath)); XSSFWorkbook workbook = null; workbook = new XSSFWorkbook(fileInputStream); xssfResultSheet = workbook.getSheet("Sheet1"); int iRowCount = xssfResultSheet.getLastRowNum(); for (int i = 1; i <= iRowCount; i++) { Row resultRow = xssfResultSheet.getRow(i); System.out.println(resultRow.getCell(0)); } 

我的Excel有值1,2,3,但我的输出是1.0,2.0,3.0。 相反,我的输出也应该是1,2,3

更改:

 System.out.println(resultRow.getCell(0)); 

至:

 System.out.println(new DataFormatter().formatCellValue(resultRow.getCell(0))); 

说明:

apache-poi提供了DataFormatter类作为实用工具来利用Excel中出现的内容格式。 你也可以select自定义格式,一个简单的例子就是(单元格是对你的XSSFCell对象的引用):

Excel表格如下所示:

在这里输入图像描述

码:

 System.out.println(new DataFormatter().formatCellValue(cell)); 

上面的行将打印:

 50% $ 1,200 12/21/14 9886605446 

而您的正常打印将以不同的方式解释:

 0.5 1200.0 21-Dec-2014 9.886605446E9 

POI应该有一个cell.getRawValueAsString()方法,但AFAIK不是这种情况。 您在Excel中看到的显示文本是值+格式的总和。 所以如果你想恢复“显示”:

  • 从单元格对象中检索单元格值
  • 使用关联的CellStyle检索单元格格式。
  • 使用DataFormatter将格式应用于值

尝试这个,

 System.out.println((int)Math.round(cell.getNumericCellValue())); 

Apache POI将您的数值单元格值解释为double,为了避免这种情况,请尝试设置单元格types。 也许这会帮助你:

for (int i = 1; i <= iRowCount; i++) { Row resultRow = xssfResultSheet.getRow(i); resultRow.getCell(i).setCellType(Cell.CELL_TYPE_STRING); System.out.println(Integer.parseInt(resultRow.getCell(0).toString())); }