我需要为整行设置颜色,但是问题是我的某些单元格是空白单元格,不包含任何数据,
XSSFRow row2 = sheet.getRow(1);
CellStyle style = wb.createCellStyle();
style.setFillForegroundColor(IndexedColors.GREEN.getIndex());
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
for (int i = 0; i < row1.getLastCellNum() + 1; i++) {// For each cell in the row
row2.getCell(i).setCellStyle(style);// Set the style
}
我遇到这样的错误:
java.lang.NullPointerException
我认为此错误来自空白单元格,因为当我尝试在包含数据的单元格上设置颜色时,例如:
row2.getCell(4).setCellStyle(style);
相应的单元格是相应的颜色。
我们真的可以在空白单元格上放置颜色吗?
答案 0 :(得分:1)
您应该尝试以下方法。 在这里,我给出了逻辑,因为我没有确切的依赖性,请按照以下方法进行操作。首先检查row2.getCell是否不为null,然后设置,否则创建单元格,然后设置。
XSSFRow row2 = sheet.getRow(1);
CellStyle style = wb.createCellStyle();
style.setFillForegroundColor(IndexedColors.GREEN.getIndex());
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
for (int i = 0; i < row2.getLastCellNum(); i++) {// For each cell in the row
if( row2.getCell(i)!=null){
row2.getCell(i).setCellStyle(style);// Set the style
}else{
Cell cell=row2.createCell(i);
cell.setCellStyle(style);
}
}