因为调色板充满你得到这个错误。你需要做的是覆盖预设颜色。 这里是我使用的功能的例子:
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);
您是否已经定义了文件中的最大颜色数量? (Excel对各种事物有很大的限制,比如数字或者行和列,但也包括样式的数量等) – Gagravarr
@kenny:如果它真的解决了你的问题,你能考虑接受下面的答案吗? – veer7