为 HSSFCellStyle 设置前景色总是显示为黑色

2022-08-31 20:32:40

我正在使用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”行,则根本不会显示任何颜色。


答案 1

我让它工作。我必须设置前景色才能使背景色起作用(??)。

所以我改变了:

cellStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index);

自:

cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);

它成功了!


答案 2

如果要设置前景色,请使用

cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

如果要设置背景色,请使用

style.setFillPattern(FillPatternType.THICK_BACKWARD_DIAG);

style.setFillPattern(FillPatternType.THIN_BACKWARD_DIAG);

如果将前景填充图案设置在背景填充图案之前,则前景和背景颜色似乎“堆叠”(红色 + 蓝色 = 紫色),而不是相反。您还可以选择其他几种填充图案。请注意,如果不更改默认填充图案,则不会应用该颜色。

CellStyle.SOLID_FOREGROUND在版本 3.15+ 中已弃用。请改用。FillPatternType.SOLID_FOREGROUND


推荐