如何在java selenium的单个程序中读取excel中的字符串和数字

时间:2017-08-28 07:08:22

标签: java

FileInputStream file=new FileInputStream ("C:\\Users\\sagar.lankegowda\\Desktop\\My workspace\\adt bundle\\adt-bundle-windows-x86_64-20140702\\eclipse\\Excel\\UserCreditanls.xls");
Workbook wb=WorkbookFactory.create(file);
Sheet st=wb.getSheet("Sheet1");
Row r= st.getRow(0);
Cell c=r.getCell(1);
String str="";

if(c.equals(str))
{
     System.out.println(c.getStringCellValue());
}
//System.out.println(str);
else
{   
    System.out.println(c.getNumericCellValue());
}
System.out.println(str);

在运行此代码时,我得到一个例外:

Exception in thread "main" java.lang.IllegalStateException: Cannot get a NUMERIC value from a STRING cell

1 个答案:

答案 0 :(得分:2)

这里你可以做的只是根据需要格式化单元格类型。 我在下面发布了以下代码:

private static String formatCell(Cell cell)
{
    NumberFormat nf = NumberFormat.getNumberInstance(Locale.getDefault());
    DecimalFormat df = (DecimalFormat)nf;
    df.setRoundingMode(RoundingMode.CEILING);
    df.setGroupingUsed(false);
    df.setMaximumFractionDigits(2);
    if (cell == null) {
        return "";
    }
    switch(cell.getCellType()) {
        case Cell.CELL_TYPE_BLANK:
            return "";
        case Cell.CELL_TYPE_BOOLEAN:
            return Boolean.toString(cell.getBooleanCellValue());
        case Cell.CELL_TYPE_ERROR:
            return "*error*";
        case Cell.CELL_TYPE_NUMERIC:
            return df.format(cell.getNumericCellValue());
        case Cell.CELL_TYPE_STRING:
            return cell.getStringCellValue();
        case Cell.CELL_TYPE_FORMULA:
            return df.format(cell.getNumericCellValue());
        default:
            return "<unknown value>";
    }
}

并致电:

formatCell(row.getCell(0))