Как исправить исключение нулевого указателя при переборе ячеек в файле xls - PullRequest
0 голосов
/ 12 января 2019

Я пытался разрешить исключение нулевого указателя. Я пробовал try и catch, но он не работает.
Debug показывает строку, где запускается итератор, и он ссылается на какое-то нулевое значение, выбрасывая null pointer exception, но я не смог его найти.

Я перепробовал все, но не смог решить.
Ошибка

java.lang.NullPointerException at ReadDataUsingIterator.main (ReadDataUsingIterator.java:37)

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import java.util.Iterator;
import java.util.NoSuchElementException;
import java.util.logging.Logger;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ReadDataUsingIterator {

    public  static void main(String[] args) {
        try {
    File file = new File("C:\\Users\\Ashma\\Desktop\\Automation\\testdata.xlsx");

    try {
        @SuppressWarnings("unused")
        FileInputStream fis = new FileInputStream(file);
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    XSSFWorkbook workbook = new XSSFWorkbook();

    String sheetName = ("user_testdata");
    Sheet sheet = workbook.getSheet(sheetName);
    //XSSFSheet sheet = workbook.getSheetAt(0);
    //iterate thru rows one by one

    java.util.Iterator<Row> rowIterator = sheet.iterator();
    while (rowIterator.hasNext()) 
    {
        Row row = rowIterator.next();
        java.util.Iterator<Cell> cellIterator = row.cellIterator();

        while(cellIterator.hasNext()) 
        {
            Cell cell = cellIterator.next();
            //check cell type and format
            if(cell !=null) {
            switch(cell.getCellType()) 
            {
            case Cell.CELL_TYPE_NUMERIC:
                System.out.print(cell.getNumericCellValue() + "t");
            break;
            case Cell.CELL_TYPE_STRING:
                System.out.print(cell.getStringCellValue() + "t");
            break;
            }

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

    } 
        catch (NullPointerException ne)
        {
        ne.printStackTrace();
    }
    }
}

1 Ответ

0 голосов
/ 12 января 2019

вы не читаете файл Excel. Вы не передаете FileInputStream ни к чему, вы просто создаете пустую книгу. В этой пустой книге нет листа с именем user_testdata, следовательно, ваш объект листа имеет значение null. Вы должны создать свою книгу из файла, что-то вроде

Workbook workbook = WorkbookFactory.create(new File("C:\\Users\\Ashma\\Desktop\\Automation\\testdata.xlsx"));

...