2017-02-20 8 views
0

私はCellStyleのグローバル変数 CellStyle cellStyle = workbook.createCellStyle()を持っていて、4列目のすべてのセルの色を塗りつぶそうとしています。 ......私は報告のためにHSSFWorkbookとHSSFSheetを使用しています方法によって個々のセルの色を異なる色で塗りつぶすApache POI

var cell = row.createCell(colIndex) 
     if (colIndex == 4) { 
      cellStyle.setFillForegroundColor(HSSFColor.LIME.index); 
      cellStyle.setFillPattern(HSSFCellStyle.ALIGN_CENTER); 
     } else { 
      cellStyle.setFillForegroundColor(HSSFColor.WHITE.index); 
      cellStyle.setFillPattern(HSSFCellStyle.ALIGN_CENTER); 
     } 

     if (cell != null) { 
      cell.setCellStyle(cellStyle); 
      cell.setCellValue(value); 
     } 

このようにしてシート全体が塗りつぶされ、結果としてすべてのセルがLIMEカラーで塗りつぶされました。

+1

セルスタイルはワークブックスコープです。あなたが望む各色のために最初に1つを作成してください – Gagravarr

答えて

0

コメントは正しいです。CellStyleは共有されており、新しいセルスタイルの作成にも制限があります。 私は3つの異なるスタイルの3つのメソッドとそれらの1つを作成しました.xtendコードのために私を許してください。

getCellStyle1(HSSFWorkbook sampleWorkBook) { 
     val font = sampleWorkBook.createFont() 
     font.setFontName(HSSFFont.FONT_ARIAL) 
     font.setColor(IndexedColors.BLACK.index) 
     font.setBoldweight(HSSFFont.COLOR_NORMAL) 

     if (commonCellStyle == null) 
      commonCellStyle = sampleWorkBook.createCellStyle() 
     commonCellStyle.setCellBorderStyle 
     commonCellStyle.setFillForegroundColor(HSSFColor.WHITE.index) 
     commonCellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND) 
     commonCellStyle.setFont(font) 
     commonCellStyle.setCellBorderStyle 
     return commonCellStyle 
    } 

ヌルが見つかった場合のスタイルは様々な列間で共有できるように、同様に、私はより多くのgetCellStyle2とgetCellStyle3がちょうど1より多くを作成しています。

関連する問題