【问题标题】:Fill color of individual cells with different color Apache POI用不同颜色的Apache POI填充单个单元格的颜色
【发布时间】:2017-02-20 11:55:57
【问题描述】:

我使用这样的东西:我有一个 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 颜色!

【问题讨论】:

  • 单元格样式是工作簿范围的。在开始时为您想要的每种颜色创建一个

标签: java apache-poi export-to-excel


【解决方案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,只需再创建一个,这样样式就可以在各个列之间共享。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-05
    • 2015-03-19
    • 2018-04-11
    相关资源
    最近更新 更多