You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于数据驱动的Selenium出现NumberFormatException异常:输入字符串为"3.0"

解决Selenium Excel数据驱动中的NumberFormatException("3.0"输入字符串问题)

嘿,这个问题我太熟了!咱们先搞清楚为啥会报错:你的代码里处理数字类型单元格时,用String.valueOf(cell.getNumericCellValue())把数字转成字符串——如果Excel里的单元格是整数(比如值为3),getNumericCellValue()会返回一个double类型的3.0,转成字符串就变成了"3.0"。后续你要是把这个字符串转成整数类型,自然就会抛出NumberFormatException了。

下面给你两个靠谱的解决方案,优先推荐第二个,更省心:

方案1:用Apache POI的DataFormatter类(推荐)

DataFormatter是POI专门用来按Excel显示格式获取单元格值的工具,不管是整数、小数还是日期,它都能返回和Excel界面显示一致的字符串,完全不用自己判断单元格类型,代码也更简洁。

修改后的代码如下:

public String[][] getDataFromSheet(String excelfilename, String sheetName) {
    String datasets[][] = null;
    try {
        XSSFSheet sheet = workbook.getSheet(sheetName);
        int totalRow = sheet.getLastRowNum() + 1;
        int totalCol = sheet.getRow(0).getLastCellNum();
        datasets = new String[totalRow - 1][totalCol];
        // 初始化DataFormatter
        DataFormatter formatter = new DataFormatter();
        
        for (int i = 1; i < totalRow; i++) {
            XSSFRow rows = sheet.getRow(i);
            for (int j = 0; j < totalCol; j++) {
                XSSFCell cell = rows.getCell(j);
                // 直接用formatter获取单元格的显示文本
                datasets[i - 1][j] = formatter.formatCellValue(cell);
            }
        }
        return datasets;
    } catch (Exception e) {
        e.printStackTrace(); // 建议打印异常,方便排查问题
        return datasets;
    }
}

方案2:手动处理数字类型的小数部分

如果你不想引入新的工具类,也可以在处理数字单元格时,判断这个double值是否是整数,如果是就转成整数再转字符串,否则保留小数:

修改后的数字处理逻辑部分:

else if (cell.getCellTypeEnum() == CellType.NUMERIC) {
    double numericValue = cell.getNumericCellValue();
    String cellText;
    // 判断是否是整数
    if (numericValue == Math.floor(numericValue)) {
        cellText = String.valueOf((long) numericValue);
    } else {
        cellText = String.valueOf(numericValue);
    }
    datasets[i - 1][j] = cellText;
}

这样处理后,Excel里的整数3就会被转成字符串"3",而不是"3.0",后续转整数就不会报错了。

另外提个小建议:catch块里最好打印一下异常信息(比如e.printStackTrace()),不然出问题了很难排查原因哦~

内容的提问来源于stack exchange,提问作者Dipak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:05:15