和poi自定义颜色的纠结时光

poi,一个简单的小工具,却暗藏杀机。掉坑里就得爬半天。

<poi.version>4.1.2</poi.version>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>${poi.version}</version>
</dependency>

这个版本,设置颜色,用RGB咋弄都不行,背景都是黑色的,据说是java.awt.Color是测试阶段。

当然,你可以用他默认的这些颜色,具体参看这个 poi 颜色对照表_xcc_2269861428的博客-CSDN博客_poi颜色对照表

最后,改了workbook才行。不说我的惨痛历程里。直接看可以用的版本

//1、创建workbook部分,一定要用这个版本才行哦,
/**
 * 创建一个工作簿
 */
public void createWorkbook() throws DecoderException {
    this.wb = new HSSFWorkbook();//创建个excel
    this.sheet = wb.createSheet();//创建个页签
    wb.setSheetName(0, sheetName);//页签起个名字
    this.styles = createStyles(wb);
}
//2、设置背景颜色的部分
int[] rgb = new int[]{127,127,6};//定义颜色数组
HSSFWorkbook work=(HSSFWorkbook)wb;
HSSFPalette pallette = work.getCustomPalette();//获取调色板
pallette.setColorAtIndex(IndexedColors.BLUE.getIndex(),(byte)rgb[0], (byte)rgb[1], (byte)rgb[2]);//把蓝色的index处的颜色调整成我们自己定义的rgb颜色
style.setFillForegroundColor(IndexedColors.BLUE.getIndex());//把蓝色的index赋值给这个cell块的style
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);//设置填充模式为前背景色

简单解释下,第一创建一个excel,选择HSSFWorkbook,不要用XSSFWorkbook,要不后面的都跑不通,之前用了XSSFWorkbook,咋整颜色都是黑的,不论怎么从java.awt.Color变换,还是用数组直接传。

第二段是在excel原有的调色板中找了一个 “IndexedColors.BLUE.getIndex()”,把他的颜色设置成我们想设置的,然后再把这个index赋值给style。

这里不一定就用蓝色啊,只是我这里用了蓝色,具体可以根据你的业务,看哪个不常用,改改。毕竟可能会影响下一步操作的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值