使用openpyxl编辑Excel文件时能否保留图表样式?图表背景变白
解决openpyxl保存后图表样式丢失的问题
问题根源
你直接新建了WorkBook对象而非加载已有Excel文件。openpyxl的空白工作簿会用默认样式覆盖原文件的所有格式信息,包括其他工作表的图表样式。
修复步骤
1. 加载已有Excel文件
用load_workbook()打开目标文件,完整保留原文件的格式、图表样式:
from openpyxl import load_workbook import pandas as pd # data_only=False保留公式,read_only=False允许写入操作 wb = load_workbook("你的目标文件.xlsx", data_only=False, read_only=False)
2. 写入数据到指定工作表
从加载的工作簿中获取目标工作表,再写入DataFrame数据(示例从第2行开始写,避免覆盖表头):
ws = wb["需要修改的工作表名称"] df = pd.read_csv("数据源.csv") # 逐行写入数据 for row_num, row_data in enumerate(df.values, start=2): for col_num, cell_value in enumerate(row_data, start=1): ws.cell(row=row_num, column=col_num, value=cell_value)
3. 保存文件
直接调用加载的工作簿的save()方法,仅修改目标工作表数据,其他工作表的图表样式完全保留:
wb.save("修改后的文件.xlsx")
替代方案:用pandas直接写入
如果习惯用pandas,可指定openpyxl引擎以追加模式写入,避免覆盖样式:
with pd.ExcelWriter("你的目标文件.xlsx", engine="openpyxl", mode="a", if_sheet_exists="replace") as writer: # startrow=1从第2行写,header=False不重复写表头 df.to_excel(writer, sheet_name="目标工作表", index=False, header=False, startrow=1)
注意事项
- 升级openpyxl到最新版本,旧版本可能存在样式兼容bug:
pip install --upgrade openpyxl - 不要用新建
WorkBook()的方式处理已有格式的文件,必须从已有文件加载。
内容的提问来源于stack exchange,提问作者SimonBfd
相关产品推荐
相关产品推荐

