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

如何将无表头CSV的全部数据(含首行)写入现有Excel文件?

解决无表头CSV首行数据写入Excel时被遗漏的问题

问题根源

你的脚本读取无表头CSV时,Pandas默认会把首行数据识别为列名,导致实际有效数据从第二行开始加载,最终写入Excel时丢失了原本的首行数据——这才是问题核心,并非to_excel的参数设置错误。

修改后的完整脚本

import pandas as pd
import os

csv_file_path = r'C:\Users\someUser\Downloads\file1.csv'
excel_file_path = r'S:\noWhere\noWhereAgain\file2.xlsx'

# 关键:读取无表头CSV时指定header=None,避免首行被当作列名
csv_data = pd.read_csv(csv_file_path, header=None)

if os.path.exists(excel_file_path):
    excel_data = pd.read_excel(excel_file_path)
    
    last_row_index = excel_data.last_valid_index()
    
    # 计算起始行:紧接在Excel最后一行下方写入,避免空行
    start_row = last_row_index + 1 if last_row_index is not None else 0
    with pd.ExcelWriter(excel_file_path, mode='a', engine='openpyxl', if_sheet_exists='overlay') as writer:
        # header=False:不写入Pandas自动生成的列名(0、1、2...)
        csv_data.to_excel(writer, sheet_name='Sheet1', startrow=start_row, index=False, header=False)

else:
    # 首次创建Excel时,若不需要表头则用header=False;需要自定义表头可参考下方示例
    csv_data.to_excel(excel_file_path, index=False, header=False)

关键修改说明

  1. 读取CSV时添加header=None:明确告知Pandas该文件无表头,首行即为有效数据,确保所有行都被正确加载。
  2. 调整start_row计算逻辑:原脚本last_row_index + 2会导致新数据与原有数据之间空一行,改为+1实现连续写入。
  3. 保持to_excel的header=False:避免将Pandas自动生成的数字列名写入Excel,符合无表头CSV的需求。

可选:首次创建Excel时添加自定义表头

如果需要给新生成的Excel添加自定义表头,可修改else分支:

else:
    # 根据实际需求定义表头列名
    custom_headers = ['订单ID', '客户名称', '交易金额']
    csv_data.columns = custom_headers
    csv_data.to_excel(excel_file_path, index=False, header=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:43:10