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

Python写入Excel合并单元格失败问题求助

解决向Excel合并单元格写入内容无效的问题

问题原因

pandas对Excel合并单元格的支持有限:读取时仅合并区域的左上角单元格会保留值,其余位置为NaN;写入时默认不会保留原有的合并格式,再加上代码未处理原工作表的覆盖逻辑,最终导致修改后的值无法正确显示。

解决方案

方法一:直接用openpyxl修改(推荐,更可靠)

合并单元格的实际值存储在左上角单元格,直接定位修改即可,完全保留原有格式:

from openpyxl import load_workbook

# 替换为你的文件路径
file_path = "你的Excel文件.xlsx"

# 加载工作簿和目标工作表
wb = load_workbook(file_path)
ws = wb["Sheet1"]

# 修改合并单元格的左上角单元格(openpyxl用1-based索引,对应df.iloc[8,2]即第9行第3列)
ws.cell(row=9, column=3).value = "Bob Smith"

# 保存修改
wb.save(file_path)

方法二:用pandas结合openpyxl(需保留DataFrame操作时使用)

如果必须用pandas处理数据,需要先删除原工作表再写入,避免重复创建sheet,同时注意合并单元格的位置:

import pandas as pd
from openpyxl import load_workbook

file_path = "你的Excel文件.xlsx"

# 读取Excel,合并单元格仅左上角有值
df = pd.read_excel(file_path, sheet_name="Sheet1")

# 修改目标单元格(确认是合并区域的左上角)
df.iloc[8, 2] = "Bob Smith"

# 加载工作簿
book = load_workbook(file_path)
writer = pd.ExcelWriter(file_path, engine="openpyxl")
writer.book = book

# 删除原Sheet1,避免创建重复工作表
if "Sheet1" in writer.book.sheetnames:
    del writer.book["Sheet1"]

# 写入修改后的DataFrame
df.to_excel(writer, sheet_name="Sheet1", index=False)

# 保存文件
writer.save()

关键提示

  • 确认你修改的df.iloc[8,2]确实是合并单元格的左上角位置,否则修改的是NaN值,不会显示在合并区域中。
  • 若需要保留原Excel的所有格式(包括合并单元格、颜色、字体等),优先使用openpyxl直接操作,pandas更适合处理纯数据表格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 11:50:24