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

Python读取多CSV文件写入单个Excel工作表(数据块留空行分隔)

多CSV分块写入同Excel工作表的稳定实现方案

高频报错原因

  • 写入流程中反复以追加模式开关ExcelWriter,触发不同pandas、openpyxl版本的引擎兼容报错
  • 写入行号偏移计算错误,导致空行缺失、相邻数据块互相覆盖
  • 追加模式下未正确指定openpyxl的覆盖写入参数,直接抛出值错误

环境准备

  • 安装依赖包:pip install pandas openpyxl

完整实现代码

import pandas as pd

# 自定义配置
csv_paths = ["1.csv", "2.csv"]  # 按排版顺序填写CSV文件路径
target_sheet = "汇总数据"
output_file = "output.xlsx"
# 写入位置游标:第一次从Excel最顶部(第1行,对应程序内0索引行)开始写
write_cursor = 0

# 单次打开写入器完成所有写入,避免多次开关文件触发兼容报错
with pd.ExcelWriter(
    output_file,
    engine="openpyxl",
    mode="w"  # 直接新建/覆盖目标Excel,无残留旧数据
) as writer:
    for csv_path in csv_paths:
        # 读取CSV全量内容,保留原始表头
        df = pd.read_csv(csv_path)
        # 把当前CSV内容写入游标指定的位置
        df.to_excel(
            writer,
            sheet_name=target_sheet,
            startrow=write_cursor,
            index=False,  # 不写入pandas自带的行索引列
            header=True  # 保留CSV原表头
        )
        # 更新游标:当前CSV占用的行数(数据行+表头行) + 1行分隔空行
        write_cursor += len(df) + 1 + 1

使用说明

  • 按照最终排版的先后顺序,将CSV文件路径填入csv_paths列表,顺序错误会直接导致最终Excel的排版错乱
  • 自动保留每份CSV的原始表头,跳过无意义的pandas行索引列,完全匹配示例的排版要求
  • 不同CSV数据块之间自动插入1行空行作为分隔,无需手动调整格式
  • 若读取CSV时出现中文编码报错,在pd.read_csv()方法中补充encoding="gbk"或encoding="utf-8-sig"参数即可解决

方案核心稳定性设计:全程仅在一次文件初始化上下文中完成所有写入操作,无后续追加打开文件的步骤,从根源上规避绝大多数版本兼容类运行报错,在pandas 1.x、2.x全版本均可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 09:24:04