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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:10:49