Поиск и замена последовательности или одного нуля средним значением предшествующего и последующего ненулевого в Excel Java Poi - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть тысячи данных в моем файле Excel, и я хочу заменить нули средним значением предыдущей и последующей ненулевой строки.Например:

column4
21
22
0
23
0
0
0
23
0
0
21

ноль в третьем ряду следует заменить на среднее значение второго и четвертого ряда (22 + 23) / 2.5-й, 6-й, 7-й ряды должны быть заменены в среднем на 8-й и 4-й.9-е и 10-е с усреднением 8-го и 11-го.

    String fileName = "Try\\july2012.xls";

    InputStream input = new FileInputStream(fileName);

    HSSFWorkbook wb = new HSSFWorkbook(input);
    HSSFSheet sheet = wb.getSheetAt(0);

    Row row;
    Cell c;

    for(int i = 0; i <= sheet.getLastRowNum(); i++)
    {
        row = sheet.getRow(i);
        c = row.getCell(3);

        if(c.getCellType() == Cell.CELL_TYPE_NUMERIC)
        {
            if(c.getNumericCellValue() == 0)
            {
                 Row rowPre = sheet.getRow(i-1);
                 Cell cPre = rowPre.getCell(3);

                 Row rowSuc = sheet.getRow(i+1);
                 Cell cSuc = rowSuc.getCell(3);

                 double average = (cPre.getNumericCellValue()+cSuc.getNumericCellValue())/2;

                 c.setCellValue(average);
                 FileOutputStream outputStream = new FileOutputStream(new File("Try\\abc.xls"));
                 wb.write(outputStream);
            }
        }
    }

Проблема с моим кодом состоит в том, что он обслуживает только те одиночные нули с ненулевым предшествующим и последующим, как 3-й ряд, и я застрял с последовательностью нулейчасть.Любая помощь будет высоко ценится.

Идеальные результаты

column4
21
22
22.5
23
23
23
23
23
22
22
21
...