ApachePOI Исключение нулевого указателя - PullRequest
0 голосов
/ 23 марта 2020

Я сталкиваюсь со странным исключением из-за нулевого указателя при попытке создать лист с помощью ApachePOI. Мне нужен более модульный код, так как это часть большей системы. Мне не удалось найти подобные примеры в Интернете, все примеры хранятся в основном методе. Мне также интересно, когда необходимо включить workbook.write(outputStream), должно ли это быть в каждом методе, в котором создается новый лист / рабочая книга / строка / ячейка, или только когда я записываю данные на листы (как в методе записи )?

public class ExcelWriter {

    private XSSFWorkbook workbook;
    private String outputFile;
    private ArrayList<XSSFSheet> sheets;
    private static int sheetCount;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//Constructor --> initializes a workbook
    public ExcelWriter(String outputFile) throws IOException {
        XSSFWorkbook workbook = new XSSFWorkbook();
        this.outputFile=outputFile;
        sheets=new ArrayList<XSSFSheet>();
        sheetCount=0;

        FileOutputStream os = new FileOutputStream(outputFile);
        workbook.write(os);
        os.close();
    }

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//Method to create a new sheet in the workbook, add to sheet list
    public void newSheet(String sheetName) throws IOException {
        sheets.add(workbook.createSheet(sheetName)); //ERROR HERE****
        sheetCount++;

         FileOutputStream os = new FileOutputStream(outputFile);
         workbook.write(os);
         os.close();
    }

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//Method to write a cell into a worksheet given sheet row and column
    public void write(int sheet,int row, int col, String data) {

        XSSFSheet tempSheet=sheets.get(sheet);
        System.out.println("yest");

        // Specific row number 
        XSSFRow tempRow = tempSheet.createRow(row); 

        // Specific cell number 
        XSSFCell cell = tempRow.createCell(col); 

        // putting value at specific position 
        cell.setCellValue(data); 

        // writing the content to Workbook 
        OutputStream os;
        try {
            os = new FileOutputStream(outputFile);
            workbook.write(os);
        } catch (IOException e) {
            e.printStackTrace();
        } 

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...