使用JAVA从excel检索INTEGER值

时间:2014-03-06 10:29:39

标签: java excel apache-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

5 个答案:

答案 0 :(得分:8)

变化:

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

要:

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

<强>解释

apache-poi提供DataFormatter类作为实用程序,以利用excel上显示的内容的格式。您也可以选择自定义格式,一个简单的例子就是(单元格是对XSSFCell对象的引用):

Excel工作表看起来像:

enter image description here

<强>代码:

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

上面一行会打印出来:

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

而正常的印刷品会以不同的方式解释它:

0.5
1200.0
21-Dec-2014
9.886605446E9

答案 1 :(得分:2)

试试这个,

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

答案 2 :(得分:1)

POI应该有一个cell.getRawValueAsString()方法,但AFAIK并非如此。您在Excel中看到的显示文本是值+格式的总和。因此,如果您想“按显示”恢复它:

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

答案 3 :(得分:0)

看看这是否有帮助:

使用toString将单元格的值转换为字符串后,尝试使用parseInt。

Cell cell=row.getCell(n);

首先,使用toString()

将单元格的值转换为String
String cell_value = cell.toString()

使用parseInt将其转换为整数:

int waitTime = Integer.parseInt(cell_value);

现在测试parseInt是否完成了它的工作。

System.out.print(waitTime+1);

答案 4 :(得分:-2)

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

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