2017-02-20 161 views
0

我使用类似下面的方法:我有一个CellStyle的全局变量 CellStyle cellStyle = workbook.createCellStyle()并尝试为第4列的所有单元格填充颜色。 ......用不同颜色填充单个单元格的颜色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); 
     } 

由我使用HSSFWorkbook和HSSFSheet用于报告的方式。

这样,它只是填充整个表格,并导致所有单元格都充满了LIME颜色!

+1

单元格样式是工作簿范围。在开始时为每个你想要的颜色创建一个 – Gagravarr

回答

0

该评论是正确的CellStyle是共享的,也有创建新的单元格样式的限制。 所以我创建了三种不同风格的方法,其中一种适用于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只是一个创造更多,如果发现空,这样的样式可以在不同的列共享。