Mohammad
Mohammad

Reputation: 41

Update a list inside iterator loop

This code tries to iterate over an excel file and load the data to a List<List<String>> but it throws java.lang.NullPointerException at resultList.add(rrow) but it is not clear what is the problem with it:

    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.ss.usermodel.Workbook;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    public class ReadExcel {
        public List<List<String>> resultList;
    
        public List<List<String>> ReadExcelToList(String csvPath) throws IOException {
            try {
    
                FileInputStream excelFile = new FileInputStream(csvPath);
                Workbook workbook = new XSSFWorkbook(excelFile);
                System.out.println(workbook.getSheetName(0));
                Sheet datatypeSheet = workbook.getSheetAt(0);
                Iterator<Row> iterator = datatypeSheet.iterator();
                while (iterator.hasNext()) {
    
                    Row currentRow = iterator.next();
                    Iterator<Cell> cellIterator = currentRow.iterator();
                    List<String> rrow = new ArrayList<>();
                    while (cellIterator.hasNext()) {
    
                        Cell currentCell = cellIterator.next();
                        switch (currentCell.getCellType()) {
                            case Cell.CELL_TYPE_STRING:
                                rrow.add(currentCell.getStringCellValue());
                                break;
                            case Cell.CELL_TYPE_NUMERIC:
                           rrow.add(String.valueOf(currentCell.getNumericCellValue()));
                             break;
                        }
                    }
                    resultList.add(rrow);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return resultList;
        }
    }

java.lang.NullPointerException
    at ReadExcel.readExcelToList(ReadExcel.java:40)
    at BasicCSVReader.main(BasicCSVReader.java:35)

Upvotes: 0

Views: 284

Answers (1)

gawi
gawi

Reputation: 2952

Your resultList was never created (it's null). You can fix it by defining it as follows:

public List<List<String>> resultList = new ArrayList<>();

Upvotes: 2

Related Questions