导出多种颜色主要有两个细节要注意 否则就只会输出最后一种颜色
第一点: HSSFCellStyle style = wb.createCellStyle(); 这个对象要创建在循环体里面 每一次都获得新的style 。 第二点: 如果你要的颜色 系统自带的够用就不用管第二点,如果不够 就需要注意了 。 HSSFPalette 类提供了 findSimilarColor 方法可以查找相似颜色 需要传入RGB值 HSSFColor COLOR = customPalette.findSimilarColor((byte) RGB1, (byte) RGB2, (byte) RGB3); 但是 这个方法又非常不靠谱 它只是根据RGB值查找相似颜色的下标 会有很大的偏差 而且 不同的颜色也可能会获取到相同的下标 所以如果不处理 那么输出的颜色 也会有冲突 所以你要有一个处理颜色的方法 把 起冲突的 用系统自带的输出 不起冲突的用 RGB值输出 就可以了 话不多说 上代码

这是设置颜色部分

String[] RGB = exportDto.getAsString("COLOR_RGB_"+i+"_"+j).split(",");if(SysUtils.isNotEmpty(RGB) && RGB.length == 3){int RGB1 = Integer.valueOf(RGB[0]);int RGB2 = Integer.valueOf(RGB[1]);int RGB3 = Integer.valueOf(RGB[2]);HSSFCellStyle style = wb.createCellStyle();//获取颜色short index = GetColor(RGB1, RGB2, RGB3);if(index > 0){style.setFillForegroundColor(index);}else{//不会冲突的 通过RGB 查到颜色对象HSSFColor COLOR =  customPalette.findSimilarColor((byte) RGB1, (byte) RGB2, (byte) RGB3);//设置颜色customPalette.setColorAtIndex(COLOR.getIndex(), (byte) RGB1, (byte) RGB2, (byte) RGB3);//设置单元格背景颜色style.setFillForegroundColor(COLOR.getIndex());}style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);//指定是哪一列那一行HSSFRow row = sheet1.getRow(color_1);HSSFCell cell = row.createCell(color_2);cell.setCellStyle(style);}

下面是通过 我自己有的RGB颜色 对比出来起冲突的颜色

public short GetColor(int RGB_1, int RGB_2, int RGB_3) throws Exception {short index = 0;if(RGB_1 == 255 && RGB_2 == 255 && RGB_3 == 255){// 单色index = HSSFColor.WHITE.index;}else if(RGB_1 == 255 && RGB_2 == 96 && RGB_3 == 175){// 梅红index = HSSFColor.PINK.index;}else if(RGB_1 == 247 && RGB_2 == 80 && RGB_3 == 0){// 桔红index = HSSFColor.ORANGE.index;}else if(RGB_1 == 255 && RGB_2 == 81 && RGB_3 == 81){// 西瓜红index = HSSFColor.CORAL.index;}else if(RGB_1 == 159 && RGB_2 == 80 && RGB_3 == 0){// 棕色index = HSSFColor.BROWN.index;}else if(RGB_1 == 240 && RGB_2 == 240 && RGB_3 == 240){// 银色index = HSSFColor.GREY_25_PERCENT.index;}else if(RGB_1 == 122 && RGB_2 == 254 && RGB_3 == 198){// 浅绿index = HSSFColor.LIGHT_GREEN.index;}else if(RGB_1 == 1 && RGB_2 == 129 && RGB_3 == 74){// 军绿index = HSSFColor.DARK_GREEN.index;}else if(RGB_1 == 255 && RGB_2 == 177 && RGB_3 == 177){// 橡皮红index = HSSFColor.CORAL.index;}else if(RGB_1 == 121 && RGB_2 == 255 && RGB_3 == 121){// 果绿index = HSSFColor.LIGHT_GREEN.index;}else if(RGB_1 == 255 && RGB_2 == 128 && RGB_3 == 0){// 橙色index = HSSFColor.LIGHT_ORANGE.index;}else if(RGB_1 == 185 && RGB_2 == 185 && RGB_3 == 115){// 卡其色index = HSSFColor.DARK_YELLOW.index;}else if(RGB_1 == 187 && RGB_2 == 61 && RGB_3 == 0){// 锈红index = HSSFColor.BROWN.index;}else if(RGB_1 == 255 && RGB_2 == 121 && RGB_3 == 188){// 深粉index = HSSFColor.ROSE.index;}else if(RGB_1 == 40 && RGB_2 == 255 && RGB_3 == 40){// 荧光绿index = HSSFColor.BRIGHT_GREEN.index;}else if(RGB_1 == 244 && RGB_2 == 244 && RGB_3 == 244){// 烟灰色index = HSSFColor.GREY_40_PERCENT.index;}else if(RGB_1 == 255 && RGB_2 == 244 && RGB_3 == 193){// 米黄index = HSSFColor.LEMON_CHIFFON.index;}else if(RGB_1 == 255 && RGB_2 == 217 && RGB_3 == 236){// 粉色index = HSSFColor.ROSE.index;}else if(RGB_1 == 255 && RGB_2 == 252 && RGB_3 == 236){// 米白index = HSSFColor.WHITE.index;}return index;
}

这样就可以输出多种颜色了 第一次发表 之前找了好久才找到一篇借鉴
萌新一枚 勿喷

借鉴的这一篇
https://blog.csdn.net/drifterj/article/details/46662277

java 导出excel带多种颜色相关推荐

  1. java导出excel带图片_JAVA的poi实现模版导出excel(带图片).doc

    JAVA的poi实现模版导出excel(带图片) 下面是本人使用java的poi实现使用模板到处excel,内容包含图片,使用两种不同的方式实现其到处excel.但是使用jxl实现到处excel只能到 ...

  2. java导出excel带上进度条_导出数据至Excel前台js进度条不能隐藏

    在导出数据至Excel时,有时数据会比较大,响应的时间会比较长,想做一个提示进度条,在点击导出数据按钮进,进度条显示出来,在数据导出完毕并成功弹出保存对话框时,进度条自动隐藏起来,但现在有个问题,点击 ...

  3. JAVA导出Excel通用工具类——第一篇:详细介绍POI 导出excel的多种复杂情况,包括动态设置筛选、动态合并横向(纵向)单元格等多种复杂情况——保姆级别,真的不能再详细了,代码拿来即用)

    JAVA导出Excel通用工具--第一篇:详细介绍POI 导出excel的多种复杂情况,包括动态设置筛选.动态合并横向(纵向)单元格等多种复杂情况--保姆级别,真的不能再详细了,封装通用工具类,代码拿 ...

  4. java导出excel数字格式_POI 导出excel带小数点的数字格式显示不对解决方法

    最近看到了一个问题就是java导出excel中带小数点的数字显示不对, 比如我想在excel中第一行显示:  3,000.0 但是在excle中导出的格式总是不带小数点 3000(非文本格式),而且也 ...

  5. Java操作poi导出Excel自定义字体颜色

    Java操作poi导出Excel自定义字体颜色 功能介绍 POI操作Excel 第一步创建一个导出的工具类 整体定义表格字体样式 自定义表格字体样式 总结 功能介绍 Apache POI 是用Java ...

  6. java导出excel设置行高列宽_使用POI生成Excel文件,可以自动调整excel列宽

    //autoSizeColumn()方法自动调整excel列宽 importjava.io.FileOutputStream; importorg.apache.poi.hssf.usermodel. ...

  7. JAVA导出EXCEL实现

    ##JAVA导出EXCEL实现的多种方式 java导出Excel的方法有多种,最为常用的方式就是使用第三方jar包,目前POI和JXL是最常用的二方包了,也推荐使用这两种. ###POI实现 POI这 ...

  8. java导出Excel(POI模式 Ajax下载 Post传参) bootstrap table getVisibleColumns获取显示的列

    工具类 (正式使用) package com.qyj.utils;import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson. ...

  9. EasyPoi导出Excel实现标记颜色

    EasyPoi导出Excel实现标记颜色 PS:不知道EasyPoi 的可以看快速上手文档 <dependency><groupId>cn.afterturn</grou ...

最新文章

  1. java fork_浅谈Java的Fork/Join并发框架
  2. UVA 11626 凸包(含共线)
  3. 单词evolve pro legacy launcher session
  4. python人机猜拳游戏_Python实现剪刀石头布小游戏(与电脑对战)
  5. Java笔记-DH密钥交换
  6. 山东大学linux应用实验五,【Linux】山东大学Linux应用课程实验记录
  7. linux中删除特殊文件
  8. Android HAL
  9. 如何筹办一场千人技术峰会?
  10. Linux安装Tab键补全功能
  11. SpringBoot实现Excel导入导出,好用到爆,POI可以扔掉了
  12. 基于Android的蓝牙心率设计,基于Android蓝牙的信号收发系统设计
  13. 422器件与lvds接收器的区别_TVS管与ESD保护二极管的区别
  14. vue switch组件
  15. 计算机毕业设计之java+jsp517报刊图书征订管理系统
  16. 分门别类刷leetcode——贪心算法(C++实现)
  17. el-upload+额外的参数 , element上传功能组件及其参数的详解
  18. 现行各主流语言的特点
  19. python求矩阵的秩_Python--线性代数篇
  20. 【转】高手速成android开源项目【View篇】

热门文章

  1. SQL Server基础操作(此随笔仅作为本人学习进度记录九!--游标)
  2. [ZCMU OJ]1633: 酷酷的单词(遍历)
  3. 读研攻略--如何选择你的研究方向并展开学习
  4. 操作系统 进程管理(一)——进程的含义与状态
  5. ​稳压二极管与TVS二极管
  6. Android Oreo 常见问题 3.0 | Android 开发者 FAQ Vol.11
  7. 【DIP/数字图像处理】第二次习题(DCT、DFT、DWT、DHT频谱分布;证明DFT平移性质;ILF与BLF的区别)
  8. 计算机组成原理 --- 数据信息的表示
  9. PN532半加密、无漏洞卡解密
  10. 设计模式简单RPG游戏设计