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

将不同DataFrame数据写入Excel后文件损坏,求代码问题排查

问题原因

你的代码触发Excel损坏提示的核心问题有3处:

  • 传给load_workbook和pd.ExcelWriter的FilePath为文件夹路径C:\Users\test,而非完整的目标Excel文件路径。读写Excel的接口要求传入具体的文件路径,传入文件夹路径会导致工作簿结构写入异常,最终生成的文件不符合Excel格式规范。
  • 直接对writer.book赋值绑定工作簿的写法不符合高版本pandas的规范,很容易触发底层读写逻辑异常。
  • 没有处理同名工作表冲突的逻辑,如果目标文件中已经存在名为Drip的工作表,写入时会破坏原有文件结构。
修复后可运行代码
import os,glob
import pandas as pd

master_file='combined_csv.xlsx'
# 设置工作目录
work_dir = r'C:\Users\test'
os.chdir(work_dir) 
# 设置目标文件后缀
extension = 'csv' 
# 将所有后缀为csv的文件存入数组
all_filenames = [i for i in glob.glob('*.{}'.format(extension))]
col_to_keep=["Name",
             "Area (ft)",
             "Length (ft)",
             "Center (ft)",
             "ID",
             "SyncID"]
        
# 首次写入生成基础Excel文件
combine_csv = pd.concat([pd.read_csv(f, delimiter=';', usecols=col_to_keep) for f in all_filenames])
combine_csv.to_excel(master_file, index=False,sheet_name='All')

# 完整的目标Excel文件路径
full_excel_path = os.path.join(work_dir, master_file)

# 初始化追加模式的ExcelWriter,自动处理已有工作簿加载
# if_sheet_exists='replace'表示如果工作表已存在则覆盖,也可改为'new'自动重命名或'error'抛出错误
with pd.ExcelWriter(full_excel_path, engine='openpyxl', mode='a', if_sheet_exists='replace') as writer:
    # 读取目标csv生成DataFrame
    drip_file = pd.read_csv(all_filenames[0], delimiter = ';', usecols=col_to_keep)
    # 写入新工作表
    drip_file.to_excel(writer, sheet_name = 'Drip', index=False)
补充说明

如果你需要批量将多个DataFrame写入为独立工作表,直接在上述with代码块内循环遍历你的DataFrame列表,依次调用to_excel指定不同的sheet_name即可,不需要手动调用save和close,with上下文管理器会自动处理资源释放和文件保存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:24:02