如何检测Excel(.xlsx)行内单元格背景颜色并输出HEX或RGB值

你可以使用openpyxl库提取Excel单元格背景色,和你已有的DataFrame做行列匹配,具体实现如下:
环境依赖安装
pip install openpyxl pandas
完整实现代码
from openpyxl import load_workbook import pandas as pd # 替换为你的实际文件路径和工作表名称 EXCEL_FILE = "your_file.xlsx" TARGET_SHEET = "Sheet1" # 加载Excel工作簿与已有的原始DataFrame wb = load_workbook(EXCEL_FILE, data_only=True) worksheet = wb[TARGET_SHEET] raw_df = pd.read_excel(EXCEL_FILE, sheet_name=TARGET_SHEET) # 初始化存储背景色的DataFrame,结构与原始DataFrame完全一致 color_df = pd.DataFrame(columns=raw_df.columns, index=raw_df.index) # 遍历所有数据单元格提取背景色 # 注:默认Excel第一行为表头,数据从第二行开始,若你的表格结构不同可自行调整行偏移量 for row in range(raw_df.shape[0]): for col in range(raw_df.shape[1]): # openpyxl的行、列索引从1开始,数据行需偏移+2对应df的0起始索引 cell = worksheet.cell(row=row + 2, column=col + 1) # 提取ARGB格式的背景色值 argb_value = cell.fill.fgColor.rgb # 转为标准6位HEX格式 hex_color = f"#{argb_value[2:]}" # 无填充背景的特殊处理,可按需修改默认值 if argb_value == "00000000": hex_color = "#FFFFFF" color_df.iloc[row, col] = hex_color # 合并原始数据与背景色结果 output_df = pd.concat( [raw_df.add_suffix("_value"), color_df.add_suffix("_bg_hex")], axis=1 ) # 打印输出结果 print(output_df)
可选扩展
如果需要输出RGB格式值,可增加格式转换逻辑:
# 将HEX转为RGB元组 rgb_color = tuple(int(hex_color.lstrip("#")[i:i+2], 16) for i in (0, 2, 4))
如果你的表格没有表头,数据从第一行开始,把遍历逻辑中的row + 2修改为row + 1即可。
内容的提问来源于stack exchange,提问作者shivam rai
相关产品推荐
相关产品推荐

