При чтении данных из Excel Sheet получил NullpointerException

1

Я пытаюсь читать данные с листа excel, но получая NullPointerException каждый раз при чтении данных в ячейке index = 6. Положите while (value! = Null), чтобы избежать нулевых значений, но все же получило исключение без вывода. Я помещаю снимок экрана с листа excel, откуда я пытаюсь получить данные. Изображение 174551

Code-
package com.selenium;

import java.io.FileInputStream;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.io.IOException;

public class Exxcel {
  public static void main(String[] args) throws Exception,NullPointerException{
    //WebDriver driver= new FirefoxDriver();
    //WebElement wb;
    try{
    FileInputStream file= new FileInputStream("C:\\Documents and Settings\\OMEGA\\Desktop\\Test Planning And Documents\\Automation Data.xlsx");
    Workbook data=WorkbookFactory.create(file);
    Sheet sheet=data.getSheet("Sheet1");
    for(int i=1;i<=sheet.getLastRowNum();i++){
        Row row= sheet.getRow(i);
        int j=0;
        String value=row.getCell(j).getStringCellValue();
        while(value != null){ 
        System.out.println(value);
        }//while
        while(value == null){
            j++; 
         }  
    }//for

         /*while(j1==9){
             String value=row.getCell(j1).getStringCellValue();
             System.out.println(value);
             }//while2
             */
    }catch(NullPointerException n){n.printStackTrace();
        System.out.println("Null");
        }// catch
    }//main
 }//class


StackTrace-
Null
java.lang.NullPointerException
at com.selenium.Exxcel.main(Exxcel.java:22)
Теги:
excel-vba
excel
selenium-webdriver

1 ответ

3
Лучший ответ

Недостаточно проверить, что row.getCell(j).getStringCellValue() != null. Вы должны проверить, что row.getCell(j) != null.

Кроме того, ваши циклы while не имеют никакого смысла:

Первый будет либо ничего не делать, либо печатать значение навсегда (поскольку вы не изменяете значение внутри цикла).

    while(value != null) { 
        System.out.println(value);
    }//while

Второй либо ничего не сделает, либо не увеличит j навсегда (поскольку вы не изменяете значение внутри цикла).

    while(value == null) {
        j++; 
    } 

Я предлагаю вам заменить их следующим кодом:

Row row = sheet.getRow(i);
if (row != null) {
    for (int j = 0; j < row.getLastCellNum(); j++) {
        if (row.getCell(j) != null) {
            if (row.getCell(j).getCellType() == CELL_TYPE_STRING) {
                String value=row.getCell(j).getStringCellValue();
                if(value != null) { 
                    System.out.println(value);
                }
            }
        }   
    }
}
  • 0
    Изменился ли код, как вы сказали, но все равно получил исключение без какого-либо значения / вывода
  • 1
    @Shantanu В каком ряду вы получаете исключение? Возможно, вам следует проверить эту строку! = Ноль тоже.
Показать ещё 11 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню