Как читать с одного листа и писать на другом листе в том же листе - PullRequest
0 голосов
/ 07 февраля 2019

Я получаю ошибку ниже в моем коде - java.lang.NullPointerException в CopyOfPMCTest.main (CopyOfPMCTest.java:91)

Код в строке 91 - sheet1.getRow (rowNo) .createCell (0).setCellValue (vNo);

Я отлаживаю код, и объект sheet1 имеет значение null, что вызывает ошибку.

// Reading of Excel sheet
    FileInputStream fis = new FileInputStream("C:\\Jayesh\\PMC\\PMCAutomation\\PMCDemo\\TestData\\TestSheet.xlsx");
    XSSFWorkbook workbook = new XSSFWorkbook(fis);
    XSSFSheet sheet = workbook.getSheetAt(0);// This is for reading V numbers in excelsheet -Sheet1
    XSSFSheet sheet1 = workbook.getSheetAt(1);// This is for writing the result in same excelsheet - Sheet2
    XSSFRow row;
    int initialRow=0;

    for (int i = 1; i <= sheet.getLastRowNum(); i++) {
        row = (XSSFRow) sheet.getRow(i);
        int vNo = (int) row.getCell(0).getNumericCellValue();
        // Owner Details
        String ownerName = "Jayesh B";
        String ownerAddress = "Add1, Add2, India";

        List<Object> Measurement = new ArrayList<Object>();
        Measurement.add(1);
        Measurement.add("Test");
        Measurement.add(1);
        Measurement.add("Test");
        Measurement.add(1);
        Measurement.add("Test");
        Measurement.add(1);
        Measurement.add("Test");
        Measurement.add(1);
        Measurement.add("Test");
        Measurement.add(1);
        Measurement.add("Test");
        Measurement.add(1);
        Measurement.add("Test");
        Measurement.add(1);
        Measurement.add("Test");
        Measurement.add(1);
        Measurement.add("Test");
        Measurement.add(1);
        Measurement.add("Test");
        Measurement.add(1);
        Measurement.add("Test");
        Measurement.add(1);
        Measurement.add("Test");

        // Below code is to write the VNo, Owner Name, OwnerAddress, and Measurement details
        int iterator = 0;
        int totalRows = 2;
        System.out.println("Total Rows: "+totalRows);
        int totalCols = 12;
        System.out.println("Total Cols: "+totalCols);
        int colNo;
        for (int rowNo = initialRow+1; rowNo <= initialRow+totalRows; rowNo++) {
            sheet1.getRow(rowNo).createCell(0).setCellValue(vNo);
            sheet1.getRow(rowNo).createCell(1).setCellValue(ownerName);
            sheet1.getRow(rowNo).createCell(2).setCellValue(ownerAddress);
                for (colNo = 3; colNo <= totalCols + 1; colNo++) {
                sheet1.getRow(rowNo).createCell(colNo)
                        .setCellValue(Measurement.get(iterator).toString());
                iterator = iterator + 1;
    }
            iterator = iterator + 1;

    }
        initialRow=initialRow+totalRows;
    }

    fis.close();
    FileOutputStream fos = new FileOutputStream("C:\\Jayesh\\PMC\\PMCAutomation\\PMCDemo\\TestData\\TestSheet.xlsx");
    workbook.write(fos);
    fos.close();

}

Я ожидаю, что код прочитает vNo с первого листа, а затем запишетвместе с владельцем, именем и адресом измерения на втором листе того же листа.

1 Ответ

0 голосов
/ 11 февраля 2019

Исправлена ​​ошибка исключения после внесения изменений в строке 91 в листе 91: createRow (rowNo) .createCell (0) .setCellValue (vNo);

После отладки кода яобнаружил, что объект не был нулевым, поэтому проблема была в методах, которые я вызывал, используя объект.С помощью метода getRow () было невозможно найти строку, поэтому я добавил метод createRow () для создания строки, а затем установил значение в определенном месте ячейки.И это изменение сработало для меня.Я запускаю код несколько раз, и больше никаких проблем не наблюдается.

...