Ваш код не может даже скомпилироваться.
Но причина, по которой вы получаете NullPointerException
, заключается в том, что этот код
if (cell != null){
cell.setCellStyle(whiteFG);
}
else if ( "".equals(cell.getStringCellValue()) ){
cell.setCellStyle(whiteFG);
}
Все ячейки, отличные от NULL, войдут в первое условие,поэтому единственная ячейка, которая входит во второе условие - это null
.
* ОБНОВЛЕНИЕ: ответ на комментарий *
Я предполагаю, что вы хотите создать новый файл xls с цветной ячейкой.Однако ваш код пропускает точку - новая созданная Workbook
доза не содержит ни одного листа / строки / ячейки, вы должны создать ее самостоятельно.
Вот пример, который я написал.
HSSFWorkbook workBook = new HSSFWorkbook();
HSSFCellStyle style = workBook.createCellStyle();
style.setFillForegroundColor(HSSFColor.BROWN.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
HSSFSheet sheet = workBook.createSheet();
int numRow = 20;
int numCol = 20;
for (int rowIndex = 0; rowIndex < numRow; rowIndex++) {
HSSFRow row = sheet.createRow(rowIndex);
for (int colIndex = 0; colIndex < numCol; colIndex++) {
HSSFCell cell = row.createCell(colIndex);
cell.setCellStyle(brownBG);
}
}
FileOutputStream fos = new FileOutputStream("test.xls");
workBook.write(fos);
fos.flush();
fos.close();
System.out.println("done");
Код, который вы написали, использует getCell(index)
для извлечения ячеек из строки, этот метод будет возвращать null
только когда вы 'повторное редактирование нового файла xls.