2012-07-12 140 views
2

我正在避免使用任何其他模塊組。在Excel中使用pywin32設置單元格的填充RGB顏色?

我想要做的是在Excel中設置單元格的顏色,使用pywin32庫。到目前爲止,我已經找到了如何讓細胞顏色:

print xl.ActiveSheet.Cells(row, column).interior.color 

,您可以通過類似的方式分配給它只是設置:

xl.ActiveSheet.Cells(row, column).interior.color = 0 #black 

我的問題是如何設置單元格的RGB顏色?

我需要一種稱爲ColorTranslator的OLE,但我不知道如何訪問system.drawing,因爲它好像是一個.NET的事情。 http://msdn.microsoft.com/en-us/library/system.drawing.colortranslator.toole.aspx

回答

7

interior.color期望一個十六進制值 如果要在RGB表單中指定下面的代碼可以使用。

def rgb_to_hex(rgb): 
    strValue = '%02x%02x%02x' % rgb 
    iValue = int(strValue, 16) 
    return iValue 

xl.ActiveSheet.Cells(row, column).interior.color = rgb_to_hex((255,255,0)) 
+3

好像顏色被在Excel中顛倒。傳遞(255,255,0)在工作表中顯示藍色:(0,255,255)。我猜顏色是'BGR'。謝謝您的幫助。 – TankorSmash 2012-07-12 17:25:52

5

Excel可以使用由式紅+(綠色* 256)+計算值的整數(藍色* 256 * 256)

def rgbToInt(rgb): 
    colorInt = rgb[0] + (rgb[1] * 256) + (rgb[2] * 256 * 256) 
    return colorInt 

ws.Cells(row,col).Font.Color = rgbToInt((255,255,128)) 
相關問題