2011-12-09 25 views
0

poiを使用して、私のExcelファイルのすべてのセルを特定の色に設定します。しかし、私は空のセルのnullpointer例外を取得し続けます。これは私がこれまで持っているものです:excel poi:空白のセルに前景色を適用する

 HSSFWorkbook workBook = new HSSFWorkbook(); 
     HSSFCellStyle whiteFG = workBook.createCellStyle(); 
     whiteFG.setFillForegroundColor(HSSFColor.AQUA.index); 
     whiteFG.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 

     //each row has 20 columns 
     int numColumns = 20; 

     for (int colNum = 0 ; colNum < numColumns ; colNum++){ 

      HSSFCell cell = row.getCell((short)colNum); 

      if (cell != null){ 
       cell.setCellStyle(whiteFG); 
      } 

      else if ("".equals(cell.getStringCellValue())){  
       cell.setCellStyle(whiteFG); 
      } 

          else() { 
           cell.setCellStyle(whiteFG); 
          } 

空白のセルをどのように色付けすることができますか?

答えて

4

あなたのコードはコンパイルできません。このコード

if (cell != null){ 
    cell.setCellStyle(whiteFG); 
} 
else if ("".equals(cell.getStringCellValue())){  
    cell.setCellStyle(whiteFG); 
} 

はすべてnull以外のセルが第一の条件を入力しますので、第二の条件を入力するだけで、セルがnullあるので

しかし、あなたはNullPointerExceptionを得る理由です。


* UPDATE:*

をコメントに答える私はあなたが色のセルを使用して新しいXLSファイルを作成するとします。しかし、あなたのコードはポイントがありません - 新しく作成されたWorkbookにはシート/行/セルが含まれていないので、自分で作成する必要があります。

ここに私が書いた例があります。新しいXLSファイルを編集しているとき

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を返します。

関連する問題