4

我避免使用任何其他模块集。

我要做的是使用 pywin32 库在 Excel 中设置单元格的颜色。到目前为止,我已经找到了如何获取单元格颜色:

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

您可以通过以类似方式分配它来简单地设置它:

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

我的问题是如何在 RGB 中设置单元格的颜色?

我需要一个叫做 ColorTranslator to OLE 的东西,但我不知道如何访问system.drawing,因为它看起来像是一.NET件事。http://msdn.microsoft.com/en-us/library/system.drawing.colortranslator.tool.aspx

4

2 回答 2

13

internal.color 需要 BGR 中的十六进制值。如果您想以 RGB 形式指定,可以使用下面的代码。

def rgb_to_hex(rgb):
    '''
    ws.Cells(1, i).Interior.color uses bgr in hex

    '''
    bgr = (rgb[2], rgb[1], rgb[0])
    strValue = '%02x%02x%02x' % bgr
    # print(strValue)
    iValue = int(strValue, 16)
    return iValue

ws.Cells(1, 1).Interior.color = rgb_to_hex((218, 36, 238))
于 2012-07-12T04:47:47.097 回答
10

Excel 可以使用由公式 Red + (Green * 256) + (Blue * 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))
于 2014-01-24T17:04:59.177 回答