2011-11-10 76 views
2

如何將顏色類型更改爲短或變爲彩色?其實,我使用HSSFCellStyle類的setFillForegroundColor方法。 我需要將顏色傳遞給我的方法並使用該函數。 但是,它需要短的類型作爲對象。
是否有某種方法可以將其更改爲我所需的類型,或者是否有其他方法可以幫助我設置前景色?將短變色或其他方式

由於我從用戶偏好獲取顏色,所以我不知道以前的顏色。 所以,我不能使用顏色索引。 請給我一些建議。 我的代碼如下所示:

private void setBackgroudColorOfRow(HSSFWorkbook wb, HSSFRow row, Color bgColor) { 
      HSSFCell cell; 
      //Iterate through each cell and colour with light orange to 
      //differentiate the summary row with detail rows 
      for (Iterator it = row.cellIterator(); it.hasNext();) { 
       cell = (HSSFCell) it.next(); // row.getCell(j); 
       if(cell.getColumnIndex() > 1) 
       { 
        HSSFCellStyle style = wb.createCellStyle(); 
        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 
        style.setFillForegroundColor(bgColor); 

OK,讓我重新幀我的問題或者說縮短:

如何獲得顏色代碼索引,如果我有字符串或者說顏色代碼我有顏色名稱,我將如何得到它的顏色代碼索引?

回答

1

style.setRightBorderColor(HSSFColor.BLACK.index);

請參閱此處理自定義顏色。

http://poi.apache.org/spreadsheet/quick-guide.html#CustomColors


//創建工作簿 HSSFPalette調色板自定義調色板= wb.getCustomPalette();

//replacing the standard red with freebsd.org red 
palette.setColorAtIndex(HSSFColor.RED.index, 
     (byte) 153, //RGB red (0-255) 
     (byte) 0, //RGB green 
     (byte) 0  //RGB blue 
); 
+0

感謝很多答案,但我需要填寫前景隨着用戶選擇的顏色。爲此,我需要索引用戶選擇的顏色。這種方法將設置正確的邊框顏色。也適用於像黑色一樣的靜態顏色。我需要一種方法,它返回已由用戶 – user1029211

+0

更新的答案所傳遞的顏色的索引...請參閱。乾杯! – r0ast3d

+0

非常感謝。但仍然在該代碼中,顏色是硬編碼的。我只想要一個可以佔用顏色類型變量的方法,並返回該顏色的索引。 – user1029211

1
private Short getColorIndex(String colorStr, HSSFWorkbook wb) { 
     //in this method string containing RGB component is passed 
     //and corresponding color index is obtained and returned. 
     short index = 0; 
     String[] rgb = colorStr.split(","); 
     System.out.println(colorStr+"--------------"); 

     Integer red = Integer.parseInt(rgb[0]); 
     Integer green = Integer.parseInt(rgb[1]); 
     Integer blue = Integer.parseInt(rgb[2]); 

     palette = wb.getCustomPalette(); 
     HSSFColor color = palette.findSimilarColor(red, green, blue); 
     if(color != null){ 
      index = color.getIndex(); 
     } 
     else{ 
      index = IndexedColors.LIME.getIndex(); 
     } 
     return index; 
    } 

該方法返回了我的色彩指數。雖然它符合我的要求,但仍然沒有得到我的確切顏色。如果有人可以提出任何建議。否則它工作正常。 findColor(byte,byte,byte)也返回相同的結果。

除此之外,也可改變「詮釋」到「字節」如果u想使用findColor(字節,字節,字節)方法

相關問題