java poi setfillbackgroundcolor_Poi 设置excel 单元格 颜色;setFillBackgroundColor不起作用; poi 设置单元格 样式为百分比...

背景:

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%灰度颜色

3d9fea41ffc00097689a042ad843e5c0.png

poi 设置单元格 样式为百分比:

CellStyle percent = workbook.createCellStyle();//百分比 格式

percent .setAlignment(HorizontalAlignment.CENTER);

percent .setDataFormat(HSSFDataFormat.getBuiltinFormat("0.00%"));

cell.setStyle(percent);

效果在上面的图里能看到,如果想要百分比+灰色的话,就把两段代码应用在同一个style对象上~

你可能感兴趣的:(java,poi)