java poi导出excel单元格设置自定义背景颜色(任意颜色)

这篇具有很好参考价值的文章主要介绍了java poi导出excel单元格设置自定义背景颜色(任意颜色)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

java poi导出excel单元格设置自定义背景颜色

一、思考过程(看代码的移步第二点)

现有方法

现有资料多为使用IndexedColors设置颜色,

style.setFillForegroundColor(IndexedColors.AQUA.getIndex());
style.setFillPattern(CellStyle.SOLID_FOREGROUND);

但是IndexedColors能设置的颜色有限

IndexedColors.AQUA.getIndex() //1
IndexedColors.AUTOMATIC.getIndex() //2
IndexedColors.BLUE.getIndex() //3
IndexedColors.BLUE_GREY.getIndex() //4
IndexedColors.BRIGHT_GREEN.getIndex() //5
IndexedColors.BROWN.getIndex() //6
IndexedColors.CORAL.getIndex() //7
IndexedColors.CORNFLOWER_BLUE.getIndex() //8
IndexedColors.DARK_BLUE.getIndex() //9
IndexedColors.DARK_GREEN.getIndex() //10
IndexedColors.DARK_RED.getIndex() //11
IndexedColors.DARK_TEAL.getIndex() //12
IndexedColors.DARK_YELLOW.getIndex() //13
IndexedColors.GOLD.getIndex() //14
IndexedColors.GREEN.getIndex() //15
IndexedColors.GREY_25_PERCENT.getIndex() //16
IndexedColors.GREY_40_PERCENT.getIndex() //17
IndexedColors.GREY_50_PERCENT.getIndex() //18
IndexedColors.GREY_80_PERCENT.getIndex() //19
IndexedColors.INDIGO.getIndex() //20
IndexedColors.LAVENDER.getIndex() //21
IndexedColors.LEMON_CHIFFON.getIndex() //22
IndexedColors.LIGHT_BLUE.getIndex() //23
IndexedColors.LEMON_CHIFFON.getIndex() //24
IndexedColors.LIGHT_BLUE.getIndex() //25
IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex() //26
IndexedColors.LIGHT_GREEN.getIndex() //27
IndexedColors.LIGHT_ORANGE.getIndex() //28
IndexedColors.LIGHT_TURQUOISE.getIndex() //29
IndexedColors.LIGHT_YELLOW.getIndex() //30
IndexedColors.LIME.getIndex() //31
IndexedColors.MAROON.getIndex() //32
IndexedColors.OLIVE_GREEN.getIndex() //33
IndexedColors.ORANGE.getIndex() //34
IndexedColors.ORCHID.getIndex() //35
IndexedColors.PALE_BLUE.getIndex() //36
IndexedColors.PINK.getIndex() //37
IndexedColors.PLUM.getIndex() //38
IndexedColors.RED.getIndex() //39
IndexedColors.ROSE.getIndex() //40
IndexedColors.ROYAL_BLUE.getIndex() //41
IndexedColors.SEA_GREEN.getIndex() //42
IndexedColors.SKY_BLUE.getIndex() //43
IndexedColors.TAN.getIndex() //44
IndexedColors.TEAL.getIndex() //45
IndexedColors.TURQUOISE.getIndex() //46
IndexedColors.VIOLET.getIndex() //47
IndexedColors.WHITE.getIndex() //48
IndexedColors.YELLOW.getIndex() //49```

java poi导出excel单元格设置自定义背景颜色(任意颜色)

,而需求中所要颜色都是花里胡哨的,需要真正的自定义;

而颜色的本质是rgb,所以只要我们能自己设置rgb的值就能获取任意想要的颜色了;

源码分析

java poi导出excel单元格设置自定义背景颜色(任意颜色)可以发现setFillForegroundColor有两个实现方法,但是究其本质,都是接收一个XSSFColor对象作为参数
java poi导出excel单元格设置自定义背景颜色(任意颜色)
其他的代码,看看就好,关键点就在XSSFColor这个对象上;
点进这个对象,看其结构,发现有一个setRGB()方法,接收参数为一个byte数组;
java poi导出excel单元格设置自定义背景颜色(任意颜色)
到这里大家应该都明白下面该怎么操作了吧,为避免有的朋友不知道,以下贴出我的步骤:

  • 获取想要颜色的rgb值:
    以上图为例,使用windows自带的画图工具打开,按下图顺序操作,比如我想获取这个粉色:
    java poi导出excel单元格设置自定义背景颜色(任意颜色)就可以获取到rgb值了。
    java poi导出excel单元格设置自定义背景颜色(任意颜色)

  • rgb值转为byte数组:
    主要用到两个方法:

    /**
    * rgb转int
    */
    private static int getIntFromColor(int Red, int Green, int Blue){
        Red = (Red << 16) & 0x00FF0000;
        Green = (Green << 8) & 0x0000FF00;
        Blue = Blue & 0x000000FF;
        return 0xFF000000 | Red | Green | Blue;
    }

    /**
     * int转byte[]
     */
    public static byte[] intToByteArray(int i) {
        byte[] result = new byte[4];
        result[0] = (byte)((i >> 24) & 0xFF);
        result[1] = (byte)((i >> 16) & 0xFF);
        result[2] = (byte)((i >> 8) & 0xFF);
        result[3] = (byte)(i & 0xFF);
        return result;
    }

得到byte数组后将其传入XSSFColor对象,此style的背景颜色就变为了你想要的颜色了。文章来源地址https://www.toymoban.com/news/detail-409115.html

二、示例代码

// 创建一个 workbook 对象 
Workbook workbook = new XSSFWorkbook();
// 创建一个 sheet对象
Sheet sheet = workbook.createSheet();
//创建一行对象
Row row = sheet.createRow((short) 1);
//获取样式对象
XSSFCellStyle = workbook.createCellStyle();
//自定义颜色对象
XSSFColor color = new XSSFColor();
//根据你需要的rgb值获取byte数组
color.setRGB(intToByteArray(getIntFromColor(255,255,255)));
//自定义颜色
style.setFillForegroundColor(color);
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
Cell cell = row.createCell((short) 1);
cell.setCellValue("X1");
cell.setCellStyle(style);

/**
* rgb转int
*/
private static int getIntFromColor(int Red, int Green, int Blue){
    Red = (Red << 16) & 0x00FF0000;
    Green = (Green << 8) & 0x0000FF00;
    Blue = Blue & 0x000000FF;
    return 0xFF000000 | Red | Green | Blue;
}

/**
 * int转byte[]
 */
public static byte[] intToByteArray(int i) {
    byte[] result = new byte[4];
    result[0] = (byte)((i >> 24) & 0xFF);
    result[1] = (byte)((i >> 16) & 0xFF);
    result[2] = (byte)((i >> 8) & 0xFF);
    result[3] = (byte)(i & 0xFF);
    return result;
}

完结撒花~~~若文章有不对处,下面自行评论,博主很少上csdn

到了这里,关于java poi导出excel单元格设置自定义背景颜色(任意颜色)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JAVA:POI设置EXCEL单元格格式

    目录 1.Maven引入 2.单元格样式设置  3.单元格值设置 3.1.设置单元格为文本格式 3.2.设置单元格为日期格式 3.3.设置单元格数值格式 3.4.设置单元格为货币格式 3.5.设置单元格为百分比格式 3.6.设置单元格为中文大写格式 3.7.设置单元格为科学计数法格式 本文将介绍POI Excel for Jav

    2024年02月16日
    浏览(42)
  • vue导入导出excel、设置单元格背景色、文字居中、合并单元格、设置列宽(使用xlsx库和xlsx-style库)

    xlsx 是由 SheetJS 开发的一个处理excel文件的npm库 适用于前端开发者实现导入导出excel文件的经典需求 为了区别于xlsx文件,突出其应用语言,该库通常又被称为 js-xlsx 需要以下步骤: 安装 xlsx 库 你可以使用 npm 包管理器安装 xlsx 库,也可以将 xlsx 下载到本地,然后在 HTML 文件中

    2024年02月16日
    浏览(48)
  • apache poi 设置背景颜色

    要设置 Apache POI 中 HSSFCellStyle 的背景颜色,你可以按照以下步骤进行操作: 首先,创建一个 HSSFWorkbook 对象来表示你的 Excel 工作簿: 然后,创建一个 HSSFSheet 对象来表示你的 Excel 工作表: 接下来,创建一个 HSSFCellStyle 对象,并为其设置背景颜色。你可以使用 setFillBackground

    2024年02月14日
    浏览(39)
  • java poi excel 设置单元格富文本 粗体无效解决办法

    //富文本样式(一个单元格含有的多种样式格式)设置粗体无效解决办法 //设置RichTextString 的时候,给 font 设置 setBold(true) ; setItalic(true) 粗体 斜体 ,发现在office有效果,在wps 看不到加粗斜体效果。 //原因是而程序生成的加粗是b val=\\\"true\\\"/电脑的生成的xlsx的加粗是b/,所以解决

    2024年02月15日
    浏览(45)
  • POI实现导出复杂Excel(动态行,复杂单元格,水印,Excel转换为PDF)。

      一、POI 表格框架 1.POI : POI提供API给Java程序对Microsoft Office格式档案读和写的功能 2.HSSF:Horrible SpreadSheet Format,为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型” 3.POI 文档结构类  HSSFWorkbook 文档对象,HSSFSheet  页,HSSFRow 行,HSSFCell 单

    2024年02月06日
    浏览(43)
  • 自定义excel通过poi导出下载

    2024年02月13日
    浏览(48)
  • java-EasyExcel导出excel设置单元格为文本格式(含代码)

    java-EasyExcel导出excel设置单元格为文本格式(含代码) 在使用EasyExcel导出excel模板时。我们会发现导出的日期和大长度数字都会自动更换格式,不是文本格式。并且在空白单元格输入日期也是格式有问题的,如下所示,可以看到当输入相同的日期时,格式会变成自适应,不是文

    2023年04月15日
    浏览(47)
  • java poi导入Excel、导出excel

    java poi导入Excel、导出excel ReadPatientExcelUtil PoiUtils FileUtils

    2024年02月15日
    浏览(43)
  • Java使用POI导出Excel

    在项目开发中往往需要使用到Excel的导入和导出,导入就是从Excel中导入到DB中,而导出就是从DB中查询数据然后使用POI写到Excel上。 操作Excel目前比较流行的就是 Apache POI 和阿里巴巴的 easyExcel ! 废话不多说,开始撸起来!!! POI官网;https://poi.apache.org/ POI官网API:https://poi.

    2024年02月04日
    浏览(47)
  • Java Poi导出Excel表格详解

    一、导出下面的表格 二、流程详解         1、导出excel需要先将数据准备好         2、创建工作傅对象SXSSFWorkbook         3、使用工作傅对象创建sheet对象(工作页)         4、使用sheet对象创建行对象row(行对象)         5、使用row对象创建cell对象(单元格

    2024年02月10日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包