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

Python处理Excel多工作表:迭代处理后保存至新文件的方法

解决方案

直接使用pandas的ExcelWriter对象即可实现将多个处理后的DataFrame写入同一个Excel文件的不同工作表,以下是完整实现代码及关键说明:

完整代码示例

import pandas as pd

# 替换成你的自定义数据处理函数
def process_data(df):
    # 示例处理逻辑:新增一列,值为原某列的2倍
    if 'old_column' in df.columns:
        df['processed_column'] = df['old_column'] * 2
    # 这里可以添加你的其他处理逻辑,比如数据清洗、过滤、计算等
    return df

# 输入输出文件路径
input_excel = "Myfile.xlsx"
output_excel = "Myfile_processed.xlsx"

# 使用with语句自动管理ExcelWriter资源,无需手动关闭
with pd.ExcelWriter(output_excel, engine='openpyxl') as writer:
    # 读取原Excel文件,获取所有工作表名称
    original_xls = pd.ExcelFile(input_excel)
    # 遍历每个工作表
    for sheet_name in original_xls.sheet_names:
        # 读取当前工作表为DataFrame
        raw_df = pd.read_excel(original_xls, sheet_name=sheet_name)
        # 执行自定义处理
        processed_df = process_data(raw_df)
        # 将处理后的数据写入新文件的对应工作表
        processed_df.to_excel(writer, sheet_name=sheet_name, index=False)

核心逻辑说明

  • ExcelWriter的作用:这是实现多工作表写入的关键,它相当于一个写入上下文,所有to_excel操作都会指向同一个文件,不会覆盖已写入的工作表。如果直接单独调用df.to_excel(),每次都会创建新文件覆盖之前的内容。
  • 获取工作表名称:通过original_xls.sheet_names可以自动获取原文件中所有工作表的名称,不管名称是什么都能遍历处理。
  • 保持工作表同名:写入时指定sheet_name=sheet_name,确保新文件的工作表名称和原文件完全一致。
  • 自动资源管理:使用with语句包裹ExcelWriter,会在代码块结束后自动关闭文件,避免资源泄漏。

注意事项

  • 依赖库安装:需要确保已安装pandas和openpyxl(或xlsxwriter),可以通过pip install pandas openpyxl安装。
  • 格式丢失问题:pandas读取Excel时会忽略原文件的格式(如合并单元格、字体样式等),处理后写入的新文件也不会保留这些格式,如果需要保留原格式,需使用openpyxl直接操作Excel文件而非转为DataFrame处理。
  • 索引参数:to_excel中的index=False用于避免将DataFrame的索引列写入Excel,若需要保留索引可移除该参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:17:29