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

如何用Python(Pandas)批量复制并重命名Excel工作表?

如何用Python复制Excel工作表并批量生成重命名后的工作表

针对你需求——复制Salary.xlsx中的week1工作表,生成week2到week40并保存回原文件,提供两种实用方案:

方案一:用openpyxl(保留原表格式/公式)

如果需要完整保留原工作表的格式、公式、样式,推荐使用openpyxl直接操作Excel对象:

from openpyxl import load_workbook

# 加载目标Excel文件
wb = load_workbook('Salary.xlsx')
# 获取要复制的源工作表
source_sheet = wb['week1']
# 目标生成的工作表数量(最终到week40)
target_count = 40

# 从week2开始循环生成
for week_num in range(2, target_count + 1):
    # 复制源工作表
    new_sheet = wb.copy_worksheet(source_sheet)
    # 重命名新工作表
    new_sheet.title = f'week{week_num}'

# 保存修改后的文件
wb.save('Salary.xlsx')

说明

  • copy_worksheet会完整复制源表的所有内容(包括格式、公式、单元格样式)
  • 确保操作时Excel文件未被其他程序占用,否则会保存失败

方案二:用Pandas(仅复制数据)

如果只需要复制数据内容,不需要保留格式,可使用Pandas实现:

import pandas as pd

# 读取原文件所有工作表,避免覆盖原有内容
all_sheets = pd.read_excel('Salary.xlsx', sheet_name=None)
# 获取源工作表的数据
source_df = all_sheets['week1']
target_count = 40

# 以追加模式写入新工作表
with pd.ExcelWriter('Salary.xlsx', mode='a', engine='openpyxl', if_sheet_exists='error') as writer:
    for week_num in range(2, target_count + 1):
        sheet_name = f'week{week_num}'
        # 将源数据写入新表,不保留索引列
        source_df.to_excel(writer, sheet_name=sheet_name, index=False)

说明

  • sheet_name=None会读取文件中所有工作表,防止后续写入时覆盖原有内容
  • mode='a'表示追加模式,必须指定engine='openpyxl'(默认的xlsxwriter不支持追加)
  • if_sheet_exists='error'会在工作表已存在时抛出错误,可改为'replace'覆盖已有表

内容的提问来源于stack exchange,提问作者Hoàng Tuyến

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:50:23