You need to enable JavaScript to run this app. 使用pandas将CSV转为Excel并在顶部新增表头行的解决方案咨询
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas将CSV转为Excel并在顶部新增表头行的解决方案咨询

问题原因

你原来的写法会覆盖文件的核心原因是:两次独立操作同一个Excel文件,第二次调用xlsxwriter.Workbook()时默认是新建覆盖模式,直接把之前df.to_excel()生成的文件内容完全清空重写,自然会丢失原有数据。

可行方案

方案1:直接在pandas层面设置表头(最简便)

你原CSV没有表头,读取的时候首先要加header=None避免pandas把第一行数据误识别为表头,之后直接给df设置列名再导出即可,不需要额外操作xlsxwriter:

import pandas as pd

# 读取无表头的CSV,header=None告诉pandas不要把首行当表头
df = pd.read_csv(r'Y:\DAILY.csv', sep=';', header=None)
# 自定义设置你需要的列名,按列顺序替换成实际名称即可
df.columns = ['列名1', '列名2', '列名3', '...']
# 直接导出Excel,此时表头会自动生成在首行
df.to_excel(r"Y:\DAILYF.xlsx", index=False)

如果不需要保留pandas自动生成的序号索引,加index=False即可。

方案2:对接pandas的ExcelWriter操作xlsxwriter(适合需要自定义表头样式的场景)

如果你确实需要单独操作xlsxwriter设置表头格式、字体等属性,需要用同一个ExcelWriter对象关联pandas和xlsxwriter操作,避免覆盖:

import pandas as pd

# 读取CSV
df = pd.read_csv(r'Y:\DAILY.csv', sep=';', header=None)
# 用xlsxwriter作为引擎创建ExcelWriter对象
with pd.ExcelWriter(r"Y:\DAILYF.xlsx", engine='xlsxwriter') as writer:
    # 先把df写入Excel,从第2行(索引1)开始
    df.to_excel(writer, startrow=1, index=False, header=False)
    # 获取当前工作表对象
    workbook = writer.book
    worksheet = writer.sheets['Sheet1']
    
    # 自定义写入表头行(第1行,索引0),可以同时设置样式
    # 示例:表头列表
    header_list = ['列名1', '列名2', '列名3', '...']
    # 可以按需设置表头样式
    header_format = workbook.add_format({'bold': True, 'bg_color': '#f0f0f0'})
    for col_num, value in enumerate(header_list):
        worksheet.write(0, col_num, value, header_format)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 00:06:03