如何用Python的pandas读取带单元格背景色的.xlsx文件?
保留Excel单元格背景色的读取方案
pandas的read_excel仅读取单元格数据,不会保留背景色这类格式信息。要获取单元格背景色,需要借助专门处理Excel格式的库,推荐使用openpyxl(支持.xlsx格式),以下是具体实现步骤:
1. 安装依赖库
pip install openpyxl
2. 读取数据与背景色的代码示例
from openpyxl import load_workbook import pandas as pd # 加载Excel工作簿,data_only=True表示读取单元格计算结果而非公式 wb = load_workbook("My_Excel.xlsx", data_only=True) ws = wb.active # 获取当前活跃工作表,也可指定表名如wb["Sheet1"] # 提取单元格数据和对应背景色 data_rows = [] color_rows = [] for row_idx, row in enumerate(ws.iter_rows(values_only=True), start=1): data_rows.append(row) # 遍历当前行所有单元格,提取背景色 current_colors = [] for cell in ws[row_idx]: # 获取填充色十六进制值,无填充时默认返回白色FFFFFF fill_color = cell.fill.start_color.index if cell.fill.start_color.index else "FFFFFF" current_colors.append(fill_color) color_rows.append(current_colors) # 将数据转为DataFrame df = pd.DataFrame(data_rows) # 背景色也可转为DataFrame,方便与数据对应查看 color_df = pd.DataFrame(color_rows)
补充说明
- 你可以通过
df查看原始单元格数据,color_df查看对应位置的背景色十六进制值,两者行列完全对应。 - 如果需要处理旧版
.xls格式文件,可使用xlrd库(注意:xlrd 2.0及以上版本不再支持.xlsx格式),逻辑类似,通过xlrd的单元格格式属性提取背景色。
内容的提问来源于stack exchange,提问作者Priyanka Rawani
相关产品推荐
相关产品推荐

