背景:
HSSF:HSSF格式的excel,即比较老旧的.xls后缀的excel,如97-2003版的excel,支持的颜色略少。
XSSF:而XSSF(xlsx后缀)的excel的话(2007以及更新的版本),设置颜色就方便多了
本文用的是HSSF
核心代码:
CellStyle style = workbook.createCellStyle();
style.setFillForegroundColor(IndexedColors.RED.getIndex()); // 是设置前景色不是背景色
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
踩过的坑:
1)用setFillForegroundColor而不是setFillBackgroundColor()
一开始想当然以为要用setFillBackgroundColor这个方法,但是发现在xls后缀里这个方法不太管用,颜色总是盖住了文字。
后来搜了以后发现要用setFillForegroundColor()这个方法。
2)HSSF格式的excel(.xls后缀)能支持的颜色比较少:
即使是用调色板类(这里没介绍),能得到的颜色也只是有限的,而不能通过设置RGB三个值来获得精准的颜色。
(但是XSSF格式的应该就可以设置RGB三个值)我猜测可能HSSF支持的颜色就像枚举类型一样,只支持预先设定好的一些颜色。
生成的效果图:25%灰度颜色
poi 设置单元格 样式为百分比:
CellStyle percent = workbook.createCellStyle();//百分比 格式
percent .setAlignment(HorizontalAlignment.CENTER);
percent .setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00%"));
cell.setStyle(percent);
效果在上面的图里能看到,如果想要百分比+灰色的话,就把两段代码应用在同一个style对象上~