2017-02-20 5 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 просто создать еще один, если найденный нуль, так что стили могут быть разделены по различной колонке.

Смежные вопросы