Apache POI – 负值颜色值

我试图写一个代码,输出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(" )"); } 

Excel工作表的图片

一个byte总是用Java签名。 你可能会得到它的无符号值,做一个二进制AND 0xFF

 ... System.out.print((clr[k] & 0xFF) + " "); ... 

但是,如果你做的Color color = style.getFillBackgroundColorColor(); 你将只能得到两种可能的填充颜色。

Excel单元格可能有图案填充,然后FillBackgroundColorColor是图案背后的颜色, FillForegroundColorColor是图案的颜色。 但默认完全填充的单元格有固体模式,所以你需要FillForegroundColorColor因为FillBackgroundColorColor被模式完全覆盖。

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