JAVA POI 中使用顏色的類叫: HSSFColor, 它默認提供了幾十種常用的顏色,如BLANK; BLUE等, 且許多時候都是使用HSSFColor的index屬性值(如 HSSFColor.BLUE.index) ;
但在實際應用中, 這些已經定義的顏色並不能滿足需求(如客戶給你一個RGB顏色值255,204,153; 並要求導出的Excel中使用這個顏色).
我們需要HSSFPalette 來幫忙, (調用HSSFWorkbook的 getCustomPalette()方法獲取該對象)
使用HSSFPalette的前提條件: 必須使用同一個HSSFWorkbook對象.
HSSFPalette 提供了兩種方式來自定義顏色:
1, 修改已經存在的顏色對象的RGB值
代碼如下,將ORANGE的顏色值修改爲(255,204,153)
HSSFPalette customPalette = workbook.getCustomPalette();
customPalette.setColorAtIndex(HSSFColor.ORANGE.index, (byte) 255, (byte) 204, (byte) 153);
在修改後,再設置顏色爲ORANGE時,將使用修改後的顏色值.
2, 通過RGB值添加一個顏色(有一定的限制)
代碼如下, 添加一個顏色(153,204,255),返回一個HSSFColor對象.
HSSFPalette customPalette = workbook.getCustomPalette();
HSSFColor newColor = customPalette.addColor((byte) 153, (byte) 204, (byte) 255);
這樣就得到新的顏色對象newColor,可使用之.
(第2種方法的限制是在 使用時必須要有newColor對象的引用才行,而第1種方式則沒這限制)
HSSFPalette除了提供添加(或修改)顏色值方法以外, 還提供了搜索相似顏色的方法findSimilarColor(),可根據一個RGB值來得到近似的顏色值.
參考: http://ljhzzyx.blog.163.com/blog/static/38380312200972614553129/