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

如何读取Excel中红色行起始的表格并存储为多个DataFrame

解决方案

步骤1:识别红色表头行

用openpyxl遍历工作表,定位所有字体颜色为红色的行(对应表格的起始表头行)。以下代码默认红色为RGB(255,0,0)的十六进制表示FFFF0000,若你的Excel红色是其他值,可调整判断条件。

from openpyxl import load_workbook
import pandas as pd

# 加载Excel文件
wb = load_workbook("your_file.xlsx", data_only=True)
ws = wb.active  # 需指定工作表的话用 ws = wb["Sheet名称"]

red_rows = []
# 遍历所有行,查找含红色字体的行
for row in ws.iter_rows(min_row=1):
    for cell in row:
        if cell.font.color and cell.font.color.rgb == "FFFF0000":
            red_rows.append(row[0].row)
            break  # 找到该行红色字体后跳出,避免重复记录

# 去重并排序
red_rows = sorted(list(set(red_rows)))

步骤2:提取每个表格转为DataFrame

拿到红色行号后,逐个确定表格的起止范围,读取为独立的DataFrame。最后一个表格的结束行设为工作表最大行号。

dfs = []
# 遍历每个红色表头行,提取对应表格
for i in range(len(red_rows)):
    start_row = red_rows[i]
    # 确定表格结束行
    if i < len(red_rows) - 1:
        end_row = red_rows[i+1] - 2
        nrows = end_row - start_row + 1
    else:
        end_row = ws.max_row
        nrows = end_row - start_row + 1

    # 读取表格:skiprows跳过表头前的行,nrows控制读取行数
    df = pd.read_excel(
        "your_file.xlsx",
        sheet_name=ws.title,
        skiprows=start_row-1,
        nrows=nrows
    )
    dfs.append(df)

# dfs列表中依次存储三个表格的DataFrame,可通过dfs[0]/dfs[1]/dfs[2]访问

补充适配场景

  • 若红色是单元格填充色而非字体颜色,将判断条件改为:
    if cell.fill.fgColor.rgb == "FFFF0000":
    
  • 若表格列数不固定,可先获取表头行的有效列数,避免读取空列:
    header_row = ws[start_row]
    max_col = max(cell.column for cell in header_row if cell.value is not None)
    df = pd.read_excel(
        "your_file.xlsx",
        sheet_name=ws.title,
        skiprows=start_row-1,
        nrows=nrows,
        usecols=f"A:{chr(64+max_col)}"
    )
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 22:16:24