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

合并多个CSV到Excel工作簿仅保留最后一个工作表,求解决方法

问题分析与解决

你的问题核心是每次调用df.to_excel()都会覆盖整个Excel文件,而非在已有工作簿中新增工作表。另外代码里的外层for i循环完全冗余,且变量名dir和Python内置函数dir()重名,可能引发潜在问题。

修正后的代码示例

用pd.ExcelWriter统一管理工作簿,循环写入所有CSV对应的工作表:

import os
import pandas as pd

# 建议将变量名dir改为dir_path,避免与内置函数冲突
dir_path = "你的CSV文件夹路径"

# 用with语句管理ExcelWriter,自动处理文件的打开与保存
with pd.ExcelWriter("output.xlsx", engine="openpyxl") as writer:
    for filee in os.listdir(dir_path):
        if filee.endswith(".csv"):
            file_path = os.path.join(dir_path, filee)
            df = pd.read_csv(file_path, on_bad_lines='skip')
            # 可选:去掉文件名的.csv后缀作为工作表名,更简洁
            sheet_name = filee.replace(".csv", "")
            df.to_excel(writer, sheet_name=sheet_name, index=False)

关键说明

  • with语句会自动完成ExcelWriter的初始化与资源释放,无需手动调用writer.save(),能避免因文件未正确关闭导致的报错。
  • 指定engine="openpyxl"是因为xlsx格式依赖该引擎支持多工作表写入,若之前用ExcelWriter报错,大概率是未安装该库,执行pip install openpyxl即可解决。
  • 若想保留原文件名(含.csv后缀)作为工作表名,直接用sheet_name=filee即可。
  • 原代码中多余的外层循环和i变量已删除,无实际作用。

内容的提问来源于stack exchange,提问作者osama Abd-Elmohsen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:15:50