java.lang.nullpoInterException at org.apache.poi.xssf.usermodel

发布于 2025-01-31 11:20:02 字数 2638 浏览 0 评论 0原文

在实际管道中(本地工作)我遇到了一个错误:

[Utils] [ERROR] [Error] java.lang.NullPointerException 
at org.apache.poi.xssf.usermodel.XSSFWorkbook.getSheet(XSSFWorkbook.java:1112)
at utilities.ExcelData

完整错误消息的屏幕截图。

以下是我使用的代码。

@DataProvider
public Object[][] GetDataFromExcelSheet() throws Exception {

    System.out.println("Enter GetDataFromExcelSheet");
    // Get all the data of excel method
    // Main Objective: Create data array which will contain excel data

    ExcelDataProvider excelDataProviderObj = new ExcelDataProvider();

    // 1. Find excel sheet name
    
    excelDataProviderObj.GetSheetName(PropertiesfileDataProvider.GetPropertyValue("nameofthesheet"));
    // 2. Find total rows of excel
    int rows = excelDataProviderObj.FindTotalRows();
    System.out.println("number of rows found as: " +rows);
    Object[][] data = new Object[rows][6];
    for (int i = 0; i < rows; i++) 
    {
        data[i][0] = excelDataProviderObj.GetCellData(i, 0);
        data[i][1] = excelDataProviderObj.GetCellData(i, 1);
        data[i][2] = excelDataProviderObj.GetCellData(i, 2);
        data[i][3] = excelDataProviderObj.GetCellData(i, 3);
        data[i][4] = excelDataProviderObj.GetCellData(i, 4);
        data[i][5] = excelDataProviderObj.GetCellData(i, 5);
        

    }
    System.out.println("Exit GetDataFromExcelSheet");

    return data;
}

public class ExcelDataProvider
{
XSSFSheet sheetName;

public void GetSheetName(String SheetName) throws Exception

{
    System.out.println("Enter GetSheetName");
    File file=new File(".\\TestData\\TestData.xlsx");
    FileInputStream fs=new FileInputStream(file);

    XSSFWorkbook wb=new XSSFWorkbook(fs);
    //CommonFunctions commonFunctionsObj=new CommonFunctions(driver);
    if(PropertiesfileDataProvider.GetPropertyValue("URL").contains("urltag"))
    {
        sheetName= wb.getSheet(SheetName);
    }
    else
        
    sheetName= wb.getSheet(SheetName);
    System.out.println("Exit GetSheetName");

}
public int FindTotalRows()
{
    int totalRows=sheetName.getLastRowNum()+1;
    //System.out.println(totalRows);
    //System.out.println(sheetName);
    return totalRows;
    
}

public String GetCellData(int row,int column)
{
    String data=sheetName.getRow(row).getCell(column).getStringCellValue();
    //String data=sheetName.getRow(row).getCell(column).getColumnIndex();
    //String data=sheetName.getRow(row).getCell(column).toString();

    System.out.println(data);
    return data;
}
}

In the actual pipeline (locally it works) I am getting an error:

[Utils] [ERROR] [Error] java.lang.NullPointerException 
at org.apache.poi.xssf.usermodel.XSSFWorkbook.getSheet(XSSFWorkbook.java:1112)
at utilities.ExcelData

See this screenshot for the full error message.

Below is the code that I've used.

@DataProvider
public Object[][] GetDataFromExcelSheet() throws Exception {

    System.out.println("Enter GetDataFromExcelSheet");
    // Get all the data of excel method
    // Main Objective: Create data array which will contain excel data

    ExcelDataProvider excelDataProviderObj = new ExcelDataProvider();

    // 1. Find excel sheet name
    
    excelDataProviderObj.GetSheetName(PropertiesfileDataProvider.GetPropertyValue("nameofthesheet"));
    // 2. Find total rows of excel
    int rows = excelDataProviderObj.FindTotalRows();
    System.out.println("number of rows found as: " +rows);
    Object[][] data = new Object[rows][6];
    for (int i = 0; i < rows; i++) 
    {
        data[i][0] = excelDataProviderObj.GetCellData(i, 0);
        data[i][1] = excelDataProviderObj.GetCellData(i, 1);
        data[i][2] = excelDataProviderObj.GetCellData(i, 2);
        data[i][3] = excelDataProviderObj.GetCellData(i, 3);
        data[i][4] = excelDataProviderObj.GetCellData(i, 4);
        data[i][5] = excelDataProviderObj.GetCellData(i, 5);
        

    }
    System.out.println("Exit GetDataFromExcelSheet");

    return data;
}

public class ExcelDataProvider
{
XSSFSheet sheetName;

public void GetSheetName(String SheetName) throws Exception

{
    System.out.println("Enter GetSheetName");
    File file=new File(".\\TestData\\TestData.xlsx");
    FileInputStream fs=new FileInputStream(file);

    XSSFWorkbook wb=new XSSFWorkbook(fs);
    //CommonFunctions commonFunctionsObj=new CommonFunctions(driver);
    if(PropertiesfileDataProvider.GetPropertyValue("URL").contains("urltag"))
    {
        sheetName= wb.getSheet(SheetName);
    }
    else
        
    sheetName= wb.getSheet(SheetName);
    System.out.println("Exit GetSheetName");

}
public int FindTotalRows()
{
    int totalRows=sheetName.getLastRowNum()+1;
    //System.out.println(totalRows);
    //System.out.println(sheetName);
    return totalRows;
    
}

public String GetCellData(int row,int column)
{
    String data=sheetName.getRow(row).getCell(column).getStringCellValue();
    //String data=sheetName.getRow(row).getCell(column).getColumnIndex();
    //String data=sheetName.getRow(row).getCell(column).toString();

    System.out.println(data);
    return data;
}
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文