如何用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
相关产品推荐
相关产品推荐

