Я пытаюсь читать данные с листа excel, но получая NullPointerException каждый раз при чтении данных в ячейке index = 6. Положите while (value! = Null), чтобы избежать нулевых значений, но все же получило исключение без вывода. Я помещаю снимок экрана с листа excel, откуда я пытаюсь получить данные.
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)
Недостаточно проверить, что 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);
}
}
}
}
}