0

我有以下代码

私人无效执行_TestCase()抛出异常{

    int iTotalTestCases = ExcelUtils.getRowCount(Constants.Sheet_TestCases);
    System.out.println("Total TC count" + iTotalTestCases);
    **formname=ExcelUtils.getCellData(13, 6, Constants.Sheet_TestCases);**
    System.out.println("F"+formname);

    for(int iTestcase=1;iTestcase<iTotalTestCases;iTestcase++){
        bResult = true;
        sTestCaseID = ExcelUtils.getCellData(iTestcase, Constants.Col_TestCaseID, Constants.Sheet_TestCases); 
        sRunMode = ExcelUtils.getCellData(iTestcase, Constants.Col_RunMode,Constants.Sheet_TestCases);
        if (sRunMode.equals("Yes")){
            Log.startTestCase(sTestCaseID);
            iTestStep = ExcelUtils.getRowContains(sTestCaseID, Constants.Col_TestCaseID, Constants.Sheet_TestSteps);
            iTestLastStep = ExcelUtils.getTestStepsCount(Constants.Sheet_TestSteps, sTestCaseID, iTestStep);
            bResult=true;
            System.out.println("sTestCaseID"+ sTestCaseID);
            System.out.println("iTestStep"+ iTestStep);
            System.out.println("iTestLastStep"+ iTestLastStep);
            for (;iTestStep<iTestLastStep;iTestStep++){
                sActionKeyword = ExcelUtils.getCellData(iTestStep, Constants.Col_ActionKeyword,Constants.Sheet_TestSteps);
                sPageObject = ExcelUtils.getCellData(iTestStep, Constants.Col_PageObject, Constants.Sheet_TestSteps);
                sData = ExcelUtils.getCellData(iTestStep, Constants.Col_DataSet, Constants.Sheet_TestSteps);
                execute_Actions();
                if(bResult==false){
                    ExcelUtils.setCellData(Constants.KEYWORD_FAIL,iTestcase,Constants.Col_Result,Constants.Sheet_TestCases);
                    Log.endTestCase(sTestCaseID);
                    break;
                    }                       
                }
            if(bResult==true){
            ExcelUtils.setCellData(Constants.KEYWORD_PASS,iTestcase,Constants.Col_Result,Constants.Sheet_TestCases);
            Log.endTestCase(sTestCaseID);   
                }                   
            }
        }
    }   

formname=ExcelUtils.getCellData(13, 6, Constants.Sheet_TestCases)。在 getcelldata 中调用 NullPointerException 时。但是对于相同的 (13,6) 对,它在底部工作正常。在 getCellData 代码下方找到

 public static String getCellData(int RowNum, int ColNum, String SheetName ) throws Exception{
                try{
                    System.out.println("sheet"+SheetName);
                    ExcelWSheet = ExcelWBook.getSheet(SheetName);
                    System.out.println("Excelwsheet"+ExcelWSheet);
                    Cell = ExcelWSheet.getRow(RowNum).getCell(ColNum);
                    System.out.println("test here2");
                    String CellData = Cell.getStringCellValue();
                    System.out.println("Celldata"+CellData);
                    return CellData;
                 }catch (Exception e){
                     System.out.println("Exception" + e);
                     Log.error("Class Utils | Method getCellData | Exception desc : "+e.getMessage());
                     DriverScript.bResult = true;
                     return"";
                     }
                 }
4

1 回答 1

0

来自Sheet.getRow(int) Apache POI javadocs

返回 - 表示行号的行;如果未在工作表上定义,则返回 null

因此,您需要更改此行而不检查空值:

Cell = ExcelWSheet.getRow(RowNum).getCell(ColNum);

对于更像这样的东西,它确实检查+处理行(或单元格!)为空:

 Row row = ExcelWSheet.getRow(RowNum);
 if (row == null) {
    // Handle empty row
    return "";
 }
 Cell cell = row.getCell(ColNum, Row.RETURN_BLANK_AS_NULL);
 if (cell == null) {
    // Handle empty cell
    return "";
 }

您可能还想处理包含字符串以外的其他内容的单元格,以及其他一些常见问题...阅读Apache POI 电子表格文档以了解您需要做什么!

于 2015-02-13T15:38:40.433 回答