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

使用Python Openpyxl拆分合并单元格并填充原合并值

使用Openpyxl拆分合并单元格并填充原值

核心逻辑

Openpyxl中合并单元格仅左上角单元格存储实际值,其余单元格为空。要实现目标需求,需先记录目标列的合并单元格信息,再拆分单元格并为每个位置填充原合并值。

完整代码示例

假设需处理工作表的A列(列号为1,可自行修改目标列):

from openpyxl import load_workbook

# 加载工作簿与目标工作表
wb = load_workbook("your_file.xlsx")
ws = wb.active

# 指定要处理的目标列(1代表A列,2代表B列,以此类推)
target_col = 1

# 预先复制所有合并单元格范围,避免遍历中集合结构变化导致异常
merged_ranges = list(ws.merged_cells.ranges)

for merged_range in merged_ranges:
    # 判断当前合并范围是否覆盖目标列
    if merged_range.min_col <= target_col <= merged_range.max_col:
        # 获取合并单元格的原始值(仅左上角单元格有值)
        original_value = ws.cell(row=merged_range.min_row, column=merged_range.min_col).value
        
        # 拆分当前合并单元格
        ws.unmerge_cells(str(merged_range))
        
        # 遍历合并范围的所有行,为目标列的每个单元格填充原始值
        for row_num in range(merged_range.min_row, merged_range.max_row + 1):
            ws.cell(row=row_num, column=target_col, value=original_value)

# 保存处理后的文件
wb.save("processed_file.xlsx")

关键细节说明

  • 预存合并范围:将ws.merged_cells.ranges转为列表,防止拆分单元格后原集合动态变化导致遍历中断。
  • 目标列筛选:仅处理覆盖目标列的合并范围,避免无关操作。
  • 值填充逻辑:拆分后遍历原合并范围的所有行,确保每个单元格都被填充原始值。

注意事项

  • 处理前建议备份原Excel文件,避免数据意外丢失。
  • 若需处理多列,可添加循环遍历多个列号,重复执行上述逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:25:24