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

如何用Pandas修改Excel文件并保留原有格式布局?

保留Excel原有格式修改数据的解决方案

你的代码会丢失原格式,是因为直接新建了Excel文件,而非基于原文件的已有格式进行修改。以下是可行的解决方法:

方法一:基于原工作簿写入数据(保留全表格式)

通过openpyxl先加载原文件的工作簿,再用Pandas写入数据,这样能完整保留原文件的格式布局:

from pathlib import Path
import pandas as pd
from openpyxl import load_workbook

# 定义目标文件路径
file_path = Path.cwd() / "file.xlsx"

# 加载原Excel的工作簿(包含所有格式信息)
wb = load_workbook(file_path)

# 初始化ExcelWriter,指定已加载的工作簿,设置替换已有sheet
writer = pd.ExcelWriter(
    file_path,
    engine='openpyxl',
    mode='a',
    if_sheet_exists='replace'
)

# 将数据写入指定sheet,仅保留必要参数避免破坏格式
new_df.to_excel(writer, sheet_name='test', index=False)

# 保存并关闭
writer.close()

关键说明:

  • load_workbook(file_path):完整读取原Excel的单元格样式、列宽、行高、合并单元格等所有格式
  • mode='a':以追加模式打开文件,而非新建空白文件
  • if_sheet_exists='replace':替换已存在的目标sheet,避免重复创建
  • 写入时仅传递index=False等必要参数,不要随意修改header等设置,防止破坏原有表头格式

方法二:直接修改指定单元格(更精细控制)

如果只需要修改原表中的部分单元格而非整表替换,可以直接用openpyxl操作单元格,完全保留原格式:

from pathlib import Path
from openpyxl import load_workbook

file_path = Path.cwd() / "file.xlsx"
wb = load_workbook(file_path)
ws = wb['test']

# 修改指定单元格的值,格式完全保留
ws['B2'] = "新的数值"
ws['C3'] = 12345

# 保存文件
wb.save(file_path)

注意事项:

  • 确保已安装openpyxl:执行pip install openpyxl完成安装
  • 修改整表时,要保证new_df的列数、列顺序和原sheet一致,否则可能导致格式错位
  • 原文件中的宏、VBA代码无法通过此方法保留,若需要保留宏需使用engine='xlwings'等支持宏的引擎

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 03:38:17