我想将自定义颜色设置为单元格的背景。
我使用HSSFWorkbook(不能使用其他任何东西)。

HSSFPalette palette = aWorkBook.getCustomPalette();
Color col = new Color(backgroundColor);
HSSFColor myColor  = palette.addColor((byte) 10, (byte) 11, (byte) 12);

我收到此错误:java.lang.RuntimeException: Could not find free color index

最佳答案

因为托盘已满,您会收到此错误。您需要做的是覆盖预设颜色。
这是我正在使用的函数的示例:

public HSSFColor setColor(HSSFWorkbook workbook, byte r,byte g, byte b){
    HSSFPalette palette = workbook.getCustomPalette();
    HSSFColor hssfColor = null;
    try {
        hssfColor= palette.findColor(r, g, b);
        if (hssfColor == null ){
            palette.setColorAtIndex(HSSFColor.LAVENDER.index, r, g,b);
            hssfColor = palette.getColor(HSSFColor.LAVENDER.index);
        }
    } catch (Exception e) {
        logger.error(e);
    }

    return hssfColor;
}

然后将其用作背景色:
HSSFColor lightGray =  setColor(workbook,(byte) 0xE0, (byte)0xE0,(byte) 0xE0);
style2.setFillForegroundColor(lightGray.getIndex());
style2.setFillPattern(CellStyle.SOLID_FOREGROUND);

10-05 21:12
查看更多