使用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())); }