当前位置: 首页 > 知识库问答 >
问题:

Apache POI,在错误的单元格中更改背景颜色

裴华荣
2023-03-14

我必须打开现有的Excel并设置一些值或更改该单元格的背景/前景色。

这个excel是关于一家公司的工作日,所以我已经设计了一个Excel。我必须改变一些单元格的前景,因为,正如你可以想象的那样,在某些日子里,我们不起作用。

因此,对于每一天(对应于一个单元格),如果它没有被“启用”,它必须变成黄色。

我的代码是:

    for(int i=0;i<listDays.size();i++) {

            int indiceColonna = 6+i;

            /* Setto la cella GIALLA relativa alla desc corta giorno */
            if(!listDays.get(i).isEnabled()) {
                CellStyle cellaGialla = foglio.getRow(5).getCell(indiceColonna).getCellStyle();
                cellaGialla.setFillForegroundColor(IndexedColors.LIGHT_YELLOW.getIndex());
                cellaGialla.setFillPattern(FillPatternType.SOLID_FOREGROUND);
                foglio.getRow(5).getCell(indiceColonna).setCellStyle(cellaGialla);

            /* Colonne gialle : da G8 a G18 - a scendere */
                for (int y = 0; y < 11; y++) {
                    Cell cella = foglio.getRow(7 + y).getCell(6 + i);
                    CellStyle cella2Gialla = cella.getCellStyle();
                    cella2Gialla.setFillForegroundColor(IndexedColors.LIGHT_YELLOW.getIndex());
                    cella2Gialla.setFillPattern(FillPatternType.SOLID_FOREGROUND);
                    cella.setCellStyle(cella2Gialla);
                }
            }

        }

我想采用单元格的实际CellStyle,只更改前景色。这段代码部分有效,因为在其他列也设置了前景色:错误的列

如何避免此错误?我使用的是Apache POI 3.16,但我尝试了一些旧版本。

谢谢你!

共有1个答案

越信鸥
2023-03-14

我也面临着类似的问题,并找到了解决方案,即为Gagravarr提到的工作簿创建新样式。只需按以下方式更改代码。

CellStyle cella2Gialla = WorkbookObject.createCellStyle();
 类似资料: