我正在使用POI在Java中创建Excel电子表格。我有以下代码用于创建标题行:
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Report");
// some more code
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(cellNumber);
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
HSSFFont font = wb.createFont();
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setColor(HSSFColor.WHITE.index);
cellStyle.setFont(font);
cell.setCellStyle(cellStyle);
我遇到的问题是,无论我选择什么颜色,在单元格上设置填充背景颜色总是黑色。我究竟做错了什么?如果我不使用“setFillPattern”行,则根本不显示任何颜色。
答案 0 :(得分:70)
我让这个工作。我必须设置前景色才能使背景颜色有效(??)。
所以我改变了:
cellStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);
为:
cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);
它有效!
答案 1 :(得分:6)
如果要设置前景色,请使用
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
如果要设置背景颜色,请使用
style.setFillPattern(FillPatternType.THICK_BACKWARD_DIAG);
或
style.setFillPattern(FillPatternType.THIN_BACKWARD_DIAG);
前景色和背景色看起来像堆叠在一起。 (红色+蓝色=紫色)如果在背景填充图案之前设置前景填充图案,而不是相反。您可以选择其他几种填充模式。请注意,如果不更改默认填充图案,则不会应用颜色。
版本3.15+中不推荐使用 CellStyle.SOLID_FOREGROUND
。请改用FillPatternType.SOLID_FOREGROUND
。
答案 2 :(得分:0)
csHeader.setFillForegroundColor(HSSFColor.SKY_BLUE.index); csHeader.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);