У меня есть тысячи данных в моем файле 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