簡體   English   中英

AttributeError:嘗試將數據框附加到現有 Excel 工作表時,“MergedCell”對象屬性“值”是只讀的

[英]AttributeError: 'MergedCell' object attribute 'value' is read-only when trying to append dataframe to existing excel sheet

我正在嘗試將我的數據框附加到現有的 Excel 工作表,然后我選擇了 ExcelWriter 覆蓋路線。 這是我的完整應用程序代碼:

import pandas as pd
from openpyxl import load_workbook

# import excel file and create 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"]]

# variables
oracle = "oracle mysql"
sev = "moderate"
og_date = "2022-11"
false = "No"
filename = "finaldr.xlsx"

# alter dataframe
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")


# append dataframe to existing excel sheet "DR Sheet" in the "finaldr.xlsx" file
with pd.ExcelWriter(filename, mode="a", engine="openpyxl", if_sheet_exists="overlay") as writer:
    final_df.to_excel(writer, sheet_name="DR Sheet", header=None)  

這樣做會給我這個錯誤

AttributeError: 'MergedCell' object attribute 'value' is read-only

我嘗試查看其他帖子,解決方案讓我感到困惑 - 我看到一些解決方案將特定單元格稱為“合並單元格”,但我不知道對我來說合並單元格是什么或如何找到它

以防萬一有人看到這個,幸運的是我的修復相當簡單:我所要做的就是指定起始行(我的附加 DataFrame 將從該行開始)並且它解決了錯誤。 這是我的代碼和適當的解決方案, startrow=0參數被添加到.to_excel()函數:

解決方案

with pd.ExcelWriter(filename, mode="a", engine="openpyxl", if_sheet_exists="overlay") as writer:
    final_df.to_excel(writer, sheet_name="DR Sheet", startrow=456, header=None) 

以下是有關.to_excel函數和您可以使用的其他輸入的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM