我使用这样的东西:我有一个CellStyle的全局变量
CellStyle cellStyle = workbook.createCellStyle()
并尝试填充第4列中所有单元格的颜色。
......
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颜色!
答案 0 :(得分:1)
评论是正确的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,如果找到null则只创建一个,以便可以在各个列之间共享样式。