You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Excel单元格字体颜色的RGB值?支持多Python库方案

获取Excel单元格字体RGB值的解决方案

方案一:用openpyxl转换索引色为RGB值

你看到的indexed=10是Excel内置的索引颜色,openpyxl默认不会直接返回RGB,需要通过内置的索引色映射表转换:

import openpyxl as ox
from openpyxl.styles.colors import INDEXED_COLORS

wb = ox.load_workbook("test.xlsx")  
ws = wb.worksheets[0]
cell_font_color = ws["B3"].font.color

if cell_font_color.type == 'indexed':
    # 从索引色表获取RGB元组(红、绿、蓝,范围0-255)
    rgb_tuple = INDEXED_COLORS[cell_font_color.indexed].rgb
    # 转换为常用的十六进制格式(如#RRGGBB)
    rgb_hex = '#{:02X}{:02X}{:02X}'.format(*rgb_tuple)
    print(f"RGB元组:{rgb_tuple}")
    print(f"十六进制RGB:{rgb_hex}")
else:
    # 处理非索引色的情况(如直接设置的RGB或主题色)
    if cell_font_color.rgb:
        # openpyxl返回的rgb带Alpha通道,需去掉前两位
        rgb_hex = '#' + cell_font_color.rgb[2:]
        print(f"十六进制RGB:{rgb_hex}")

INDEXED_COLORS包含了Excel所有内置索引色的RGB对应关系,索引10对应的是深绿色(RGB:0, 128, 0)。

方案二:用xlwings直接获取RGB值

xlwings通过调用Excel原生API,可以直接获取单元格实际显示的字体RGB值,无需处理索引或主题色转换,更简单准确:

import xlwings as xw

# 后台启动Excel,不显示界面
with xw.App(visible=False) as app:
    wb = xw.Book("test.xlsx")
    ws = wb.sheets[0]
    # 直接获取字体颜色的RGB元组
    rgb_tuple = ws.range("B3").font.color
    rgb_hex = '#{:02X}{:02X}{:02X}'.format(*rgb_tuple)
    print(f"RGB元组:{rgb_tuple}")
    print(f"十六进制RGB:{rgb_hex}")

这个方案适合所有颜色类型(索引色、主题色、自定义RGB),结果和Excel界面显示的颜色完全一致。

内容的提问来源于stack exchange,提问作者Rapid1898

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 00:42:46