Apache POI - 负色值

时间:2017-07-26 07:23:56

标签: java excel

我试图编写一个在Excel工作表中输出单元格颜色的代码,但在调用方法GetFillBackgroundColor时,它会给我三个负值。我想知道,有什么与RGB数字有关吗? 这是我写的代码:

CellStyle style = currentCell2.getCellStyle();
Color color = style.getFillBackgroundColorColor();
if (color != null) {
    byte[] clr = ((XSSFColor) color).getRGB();
    System.out.print("( ");
    for (int k = 0; k<clr.length; k++) {
        System.out.print(clr[k]+" ");
    } 
    System.out.print(" )");
}

A picture of the Excel sheet

1 个答案:

答案 0 :(得分:0)

byte总是用Java签名。您可以通过使用AND

执行二进制0xFF来获取其无符号值
...
System.out.print((clr[k] & 0xFF) + " ");
...

但如果你做Color color = style.getFillBackgroundColorColor();,你将只获得一个可能的填充颜色。

Excel单元格可能有图案填充,然后FillBackgroundColorColor是图案背后的颜色,FillForegroundColorColor是图案的颜色。但默认完全填充的单元格具有实体模式,因此您需要FillForegroundColorColor,因为模式完全覆盖了FillBackgroundColorColor

所以我相信你需要Color color = style.getFillForegroundColorColor();