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

使用ExcelWriter追加DataFrame至Excel时遇MergedCell只读属性错误

解决AttributeError: 'MergedCell' object attribute 'value' is read-only错误

错误原因

你使用overlay模式追加DataFrame时,pandas默认从工作表的A1单元格开始写入,而目标工作表"DR Sheet"中存在合并单元格。openpyxl对合并单元格的value属性做了只读限制,无法直接覆盖修改,因此触发该错误。

解决方案

1. 定位工作表中的合并单元格

先运行以下脚本,找出"DR Sheet"里所有合并单元格的位置,确认哪些区域不能被写入:

from openpyxl import load_workbook

wb = load_workbook('finaldr.xlsx')
ws = wb['DR Sheet']

# 输出所有合并单元格的坐标范围
for merged_range in ws.merged_cells.ranges:
    print(f"合并单元格范围: {merged_range.coord}")

2. 正确追加数据到已有数据下方

修改原代码的追加逻辑,先获取工作表中已有数据的最后一行,从下一行开始写入,避开合并单元格区域(通常合并单元格在表头):

import pandas as pd
from openpyxl import load_workbook

# 原DataFrame处理逻辑保持不变
poam = pd.read_excel('finalpoam.xlsm', header = 4)
new_poam = poam[["POAM ID", "Weakness Source Identifier", "Asset Identifier", "Weakness Name", "Weakness Detector Source", "Original Risk Rating", "Original Detection Date", "Weakness Description", "Overall Remediation Plan", "False Positive"]]

oracle = "oracle mysql"
sev = "moderate"
false = "No"
filename = "finaldr.xlsx"

oracle_df = new_poam[new_poam['Weakness Name'].str.contains(oracle, case=False, na=False)]
moderate_df = oracle_df[oracle_df['Original Risk Rating'].str.contains(sev, case=False, na=False)]
false_df = moderate_df[moderate_df['False Positive'].str.contains(false, case=False, na=False)]
final_df = false_df.drop(labels=range(783, 788), axis=0)
final_df = final_df.drop(columns="False Positive")

# 修改后的追加逻辑
wb = load_workbook(filename)
ws = wb['DR Sheet']
# 获取已有数据的最后一行行号(openpyxl行号从1开始)
last_row = ws.max_row

with pd.ExcelWriter(filename, mode="a", engine="openpyxl", if_sheet_exists="overlay") as writer:
    # 设置startrow为last_row,从已有数据的下一行开始写入
    final_df.to_excel(writer, sheet_name="DR Sheet", header=None, startrow=last_row, index=False)

额外注意事项

  • 确保final_df的列数和"DR Sheet"中的数据列数一致,避免列对齐错误导致写入到合并单元格区域。
  • 如果表头的合并单元格范围较大,可手动调整startrow的值(比如表头占了前3行,就设置startrow=4)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:30:48