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

Python解析含跨行合并单元格的Excel:获取指定列数据

解决跨行合并单元格下的Excel列定位与数据提取问题

方案1:直接通过列索引硬定位(最简便)

因为E列对应的xlrd列索引是4(列从0开始计数),如果表格结构固定、E列位置不会变动,直接取每行索引4及之后的元素即可,完全绕开合并单元格的问题:

import xlrd

wb = xlrd.open_workbook("your_excel_file.xls")
sheet = wb.sheet_by_index(0)

# 假设从第5行开始提取数据(根据实际业务调整行范围)
for row_idx in range(4, sheet.nrows):
    full_row = sheet.row_values(row_idx)
    # 提取E列及以后的所有数据
    target_data = full_row[4:]
    print(target_data)

方案2:利用xlrd合并单元格信息动态定位

如果表格列位置可能变动,可通过xlrd的merged_cells属性获取合并单元格范围,找到"human readable"所在的合并区域,从而确定E列的起始索引:

import xlrd

wb = xlrd.open_workbook("your_excel_file.xls")
sheet = wb.sheet_by_index(0)
target_col = 4  # 默认E列索引,后续可动态调整

# 遍历所有合并单元格,定位第4行(索引3)的"human readable"区域
for (rlo, rhi, clo, chi) in sheet.merged_cells:
    if rlo == 3 and rhi == 4:  # 匹配第4行的合并单元格(xlrd行范围左闭右开)
        cell_val = sheet.cell_value(rlo, clo)
        if cell_val == "human readable":
            # 如果该合并单元格覆盖了A-D列,E列就是合并区域的结束列索引chi
            target_col = chi
            break

# 提取目标列及以后的数据
for row_idx in range(4, sheet.nrows):
    full_row = sheet.row_values(row_idx)
    target_data = full_row[target_col:]
    print(target_data)

方案3:换用openpyxl库(合并单元格处理更友好)

xlrd对合并单元格的支持有限,openpyxl能直接返回合并单元格的真实值,无需处理空值问题,代码更直观:

from openpyxl import load_workbook

wb = load_workbook("your_excel_file.xlsx")
sheet = wb.active

# 直接提取E列(第5列)及以后的数据,行从第5行开始
for row in sheet.iter_rows(min_row=5, min_col=5, values_only=True):
    target_data = list(row)
    print(target_data)

# 如需动态定位E列(比如通过表头匹配)
target_col = 5  # 默认E列(openpyxl列从1开始计数)
for cell in sheet[4]:  # 遍历第4行的所有单元格
    if cell.value == "human readable":
        # 获取合并单元格覆盖的列数,计算E列位置
        merge_range = cell.merge_cells.ranges[0]
        target_col = merge_range.max_col + 1
        break

# 按动态定位的列提取数据
for row in sheet.iter_rows(min_row=5, min_col=target_col, values_only=True):
    target_data = list(row)
    print(target_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:10:28