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

如何用Pandas在Excel中新增工作表并保留原有工作表?

解决Pandas保存新工作表时保留原有内容的问题

嘿,这个问题我太熟了!用Pandas往已有Excel文件里添加新工作表时,默认操作确实会直接覆盖整个文件,导致原有工作表丢失,不过有两种很实用的办法能解决,我给你拆解清楚:

方法一:用追加模式直接添加新表

这是最直接的方式,核心是用openpyxl引擎配合mode='a'参数,告诉Pandas要在已有文件上追加内容,而不是覆盖。

先确保你已经安装了openpyxl库:

pip install openpyxl

然后用下面的代码示例操作:

import pandas as pd

# 准备你要写入的新数据
new_df = pd.DataFrame({
    'ID': [101, 102, 103],
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Score': [85, 92, 78]
})

# 打开已有Excel文件,指定追加模式和引擎
with pd.ExcelWriter(
    '你的文件路径.xlsx',
    engine='openpyxl',
    mode='a',
    if_sheet_exists='replace'  # 可选:如果新表名已存在就替换,也可以设为'error'或'new'
) as writer:
    # 将新数据写入名为"新工作表"的表中
    new_df.to_excel(writer, sheet_name='新工作表', index=False)

这里的if_sheet_exists参数可以根据需求调整:

  • 'replace':替换同名的现有工作表
  • 'error':如果同名表存在就抛出错误
  • 'new':自动生成带编号的新表名(比如"新工作表1")

方法二:读取所有原有表后重新写入

如果担心追加模式出现兼容性问题(比如旧版Excel文件),或者需要同时修改原有表的内容,这种方法更稳妥:先把原有文件的所有工作表都读进内存,再把新表加进去,最后一次性写入所有内容。

示例代码:

import pandas as pd

# 1. 读取已有Excel文件的所有工作表
excel_reader = pd.ExcelFile('你的文件路径.xlsx')
# 把每个工作表转成DataFrame,存在字典里
all_sheets = {sheet_name: excel_reader.parse(sheet_name) for sheet_name in excel_reader.sheet_names}

# 2. 添加新工作表的数据
all_sheets['新工作表'] = pd.DataFrame({
    'ID': [101, 102, 103],
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Score': [85, 92, 78]
})

# 3. 将所有工作表写回文件
with pd.ExcelWriter('你的文件路径.xlsx', engine='openpyxl') as writer:
    for sheet_name, df in all_sheets.items():
        df.to_excel(writer, sheet_name=sheet_name, index=False)

注意事项

  • 如果你的文件是.xls格式(旧版Excel),openpyxl不支持,建议先转成.xlsx格式再操作,或者使用xlrd/xlwt库,但后者不支持追加模式,只能用方法二。
  • 运行代码前一定要关闭目标Excel文件,否则会出现文件被占用的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:35:41