从 .xlsx 获取单元格颜色

新手上路,请多包涵

我正在使用 openpyxl 读取 excel 文件。我想从“xlsx”文件中获取单元格颜色。我试图这样获得颜色:

 wb = load_workbook('Test.xlsx', data_only=True)
sh = wb[Sheet1]
sh['A1'].fill.start_color.index #Green Color

我得到“11L”,但我需要得到 rgb 颜色,我该怎么做?

原文由 Ivan_47 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

看起来工作表正在使用内置颜色索引。这些的映射在 openpyxl.styles.color 的源代码中

COLOR_INDEX = (
    '00000000', '00FFFFFF', '00FF0000', '0000FF00', '000000FF', #0-4
    '00FFFF00', '00FF00FF', '0000FFFF', '00000000', '00FFFFFF', #5-9
    '00FF0000', '0000FF00', '000000FF', '00FFFF00', '00FF00FF', #10-14
    '0000FFFF', '00800000', '00008000', '00000080', '00808000', #15-19
    '00800080', '00008080', '00C0C0C0', '00808080', '009999FF', #20-24
    '00993366', '00FFFFCC', '00CCFFFF', '00660066', '00FF8080', #25-29
    '000066CC', '00CCCCFF', '00000080', '00FF00FF', '00FFFF00', #30-34
    '0000FFFF', '00800080', '00800000', '00008080', '000000FF', #35-39
    '0000CCFF', '00CCFFFF', '00CCFFCC', '00FFFF99', '0099CCFF', #40-44
    '00FF99CC', '00CC99FF', '00FFCC99', '003366FF', '0033CCCC', #45-49
    '0099CC00', '00FFCC00', '00FF9900', '00FF6600', '00666699', #50-54
    '00969696', '00003366', '00339966', '00003300', '00333300', #55-59
    '00993300', '00993366', '00333399', '00333333', 'System Foreground', 'System Background' #60-64
)

11L 对应于 0000FF00(十六进制),其中 rgb 元组将为绿色 (0,255,0)。

原文由 Charlie Clark 发布,翻译遵循 CC BY-SA 3.0 许可协议

我从细胞中得到颜色所以:

 wb = load_workbook('Test.xlsx', data_only=True)
sh = wb[Sheet1]
i=sh['A1'].fill.start_color.index #Green Color
Colors=styles.colors.COLOR_INDEX
result = str(Coloros[i])
result= "#"+result[2:]

原文由 Ivan_47 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题