我试图编写一个在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(" )");
}
答案 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();
。