如何用Python获取Pandas读取的Excel文件单元格背景色?
获取Excel单元格背景色的可行方法
pandas仅负责读取单元格数据,不处理格式信息,要获取背景色需借助专门操作Excel格式的库,以下是两种可行方案:
方法一:使用openpyxl(适配.xlsx格式)
- 先安装依赖库:
pip install openpyxl
- 示例代码:
from openpyxl import load_workbook # 加载目标Excel文件 wb = load_workbook('你的文件路径.xlsx') # 选择目标工作表(这里选第一个工作表) ws = wb.active # 获取单个单元格的背景色 target_cell = ws['A1'] fill_rgb = target_cell.fill.fgColor.rgb # 判断是否有背景填充 if fill_rgb: print(f"A1单元格背景色RGB值: {fill_rgb}") else: print("A1单元格无背景填充") # 遍历所有单元格批量获取背景色 for row in ws.iter_rows(): for cell in row: color = cell.fill.fgColor.rgb print(f"单元格{cell.coordinate}背景色: {color if color else '无填充'}")
方法二:使用xlrd(仅适配.xls格式)
注意:新版xlrd不再支持.xlsx格式,需安装1.2.0版本:
pip install xlrd==1.2.0
示例代码:
import xlrd # 加载.xls文件,需开启formatting_info参数 wb = xlrd.open_workbook('你的文件路径.xls', formatting_info=True) # 选择目标工作表(这里选第一个工作表) ws = wb.sheet_by_index(0) # 获取单元格格式索引(行、列均从0开始计数) xf_index = ws.cell_xf_index(0, 0) # 获取格式对象与填充格式 xf = wb.xf_list[xf_index] fill = wb.fill_list[xf.fill_index] # 转换并输出背景色RGB值 if fill.background_colour_index != 0: rgb = wb.colour_map[fill.background_colour_index] print(f"A1单元格背景色RGB值: {rgb}") else: print("A1单元格无背景填充")
额外说明
- openpyxl是当前处理.xlsx格式的主流选择,支持更多复杂格式操作;
- 若Excel使用主题色而非纯色背景,openpyxl可通过
cell.fill.fgColor.theme结合wb.theme完成颜色映射转换。
内容的提问来源于stack exchange,提问作者Alexandre Boucard
相关产品推荐
相关产品推荐

