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

如何解决Python用xlsxwriter写Excel时重复列名的问题?

解决xlsxwriter写入Excel时数据行重复列名的问题

你的问题出在遍历字典的方式不对——当前代码里遍历det(每个字典元素)时,enumerate(det)拿到的是字典的键(也就是'id'、'name'这些列名),而不是对应的值,所以数据行才会重复写入列名。

修正方法很简单:不要直接遍历字典,而是按照csv_columns定义的表头顺序,依次取出每个字典中对应键的值,这样既能保证列顺序和表头一致,又能写入正确的数据。

修正后的完整代码:

import xlsxwriter

csv_columns = (
    'id', 'name', 'place', 'salary', 'email',
)
details = [{'id':1, 'name': 'A', 'place':'B', 'salary': 2, 'email': 'c@d.com'}, 
          {'id':3, 'name':'C', 'place':'D', 'salary': 4, 'email':'e@f.com'}]

# 替换为你的实际文件路径,比如'output.xlsx'
workbook = xlsxwriter.Workbook('output.xlsx')
worksheet = workbook.add_worksheet()

# 写入表头
for col, name in enumerate(csv_columns):
    worksheet.write(0, col, name)

# 写入数据行
for row, det in enumerate(details, 1):
    for col, key in enumerate(csv_columns):
        # 按表头的键取出对应的值
        worksheet.write(row, col, det[key])

workbook.close()

关键改动说明:

  • 内层循环改为遍历csv_columns,确保每一列的顺序和表头严格对应
  • 用det[key]获取字典中对应键的实际值,替换原来的字典键名输出

运行这段代码后,就能得到你期望的输出:

id    name    place   salary  email
  1    A         B       2       c@d.com
  3    C         D       4       e@f.com

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:55:24