java将HSSFCell转换为数字

时间:2014-05-12 12:53:00

标签: java type-conversion hssf

有人可以帮忙吗? 通过使用该代码,我也能够从Excel字段中获取值。特定列的值为5。

public Integer  Check4(int b) throws IOException  {
    InputStream myxls = new FileInputStream("book.xls");
    HSSFWorkbook wb     = new HSSFWorkbook(myxls);
    HSSFSheet sheet = wb.getSheetAt(0);       // first sheet
    HSSFRow row     = sheet.getRow(0);        // first row
    //HSSFCell cell0   = row.getCell((short)a);  // first arg
    HSSFCell cell1   = row.getCell((short)b);  // second arg
    cell1.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
    System.out.println("smth "+  cell1);
    return ;

}

然而, 这些代码的输出是:

"smth + 5.0"

我得到它,如何将var cell1 5.0转换为5? Math.round,Integer.parseInt()实际上并没有帮助

2 个答案:

答案 0 :(得分:1)

在使用HSSFCell之前,您必须从Integer.parseInt()获取字符串值。 使用Integer.parseInt(cell1.getStringCellValue())。您可以使用getNumericCellValue(),但这将返回double

答案 1 :(得分:0)

最后,通过(int)Math.round解决(cell1.getNumericCellValue()))

    public Integer  Check4(int b) throws IOException  {
    InputStream myxls = new FileInputStream("book.xls");
    HSSFWorkbook wb     = new HSSFWorkbook(myxls);
    HSSFSheet sheet = wb.getSheetAt(0);       // first sheet
    HSSFRow row     = sheet.getRow(1);        // first row
    //HSSFCell cell0   = row.getCell((short)a);  // first arg
    HSSFCell cell1   = row.getCell((short)b);  // second arg
    String sell = cell1.toString();
    cell1.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
    System.out.println("smth "+ (int) Math.round(cell1.getNumericCellValue()));
    return  (int) Math.round(cell1.getNumericCellValue());

}