开发者社区> 问答> 正文

jxl 如何自定义单元格的颜色(是自定义新的颜色,不是用jxl自带的):报错

  1.  public static Colour getNearestColour(String strColor) {  
  2.         Color cl = Color.decode(strColor);  
  3.         Colour color = null;  
  4.         Colour[] colors = Colour.getAllColours();  
  5.         if ((colors != null) && (colors.length > 0)) {  
  6.            Colour crtColor = null;  
  7.            int[] rgb = null;  
  8.            int diff = 0;  
  9.            int minDiff = 999;  
  10.            for (int i = 0; i < colors.length; i++) {  
  11.                 crtColor = colors[i];  
  12.                 rgb = new int[3];  
  13.                 rgb[0] = crtColor.getDefaultRGB().getRed();  
  14.                 rgb[1] = crtColor.getDefaultRGB().getGreen();  
  15.                 rgb[2] = crtColor.getDefaultRGB().getBlue();  
  16.       
  17.                 diff = Math.abs(rgb[0] - cl.getRed())  
  18.                   + Math.abs(rgb[1] - cl.getGreen())  
  19.                   + Math.abs(rgb[2] - cl.getBlue());  
  20.                 if (diff < minDiff) {  
  21.                  minDiff = diff;  
  22.                  color = crtColor;  
  23.                 }  
  24.            }  
  25.         }  
  26.         if (color == null)  
  27.            color = Colour.BLACK;  
  28.         return color;  
  29.     }  

上面的这个方法已经试过,并不能达成想要的结果。

尝试了继承jxl.format.colour这种方式自定义,也未成功。

尝试在jxl.format.colour源码中去更改,重新打JAR 也未成功。

不知是方法不对,还是如何,请朋友们多指教。


展开
收起
kun坤 2020-06-06 00:46:36 883 0
1 条回答
写回答
取消 提交回答
  • WritableFont titleFont = new WritableFont(WritableFont.TIMES, 14,
    WritableFont.BOLD, false);

    WritableCellFormat titleFormat = new WritableCellFormat(titleFont);

    titleFormat.setBackground(jxl.format.Colour.GRAY_50);// 背景灰色


    sheet.addCell方法中加入titleFormat

    ######这个是用JXL的自带颜色,我的意思是要自己自定义新的颜色######

    可以通过重置jxl的默认颜色来实现自定义新的颜色。参考代码如下:

    workbook.setColourRGB(Colour.LIGHT_BLUE, 0x76, 0xEE, 0x00);
    WritableCellFormat wcf2 = new WritableCellFormat(font);// 单元格样式
    wcf2.setBackground(Colour.LIGHT_BLUE);
    sheet.addCell(new Label(1, 3, "测试颜色---自定义#76EE00", wcf2));

    具体代码例子,可以参考这个 http://www.devnote.cn/java/2013/0819/71.html

    ######此答案甚好,深得我心
    2020-06-06 00:46:41
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载