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

使用xlsxwriter写入Excel遇语法错误,求正确实现方案

解决Python写入Excel的语法错误问题

嘿,我一眼就看到你的代码里cookie_sales的定义出了大问题——这就是触发「invalid syntax」的根源!你把字典和列表的语法彻底混在一起了:外层用了字典的大括号{},但里面却塞了带键值对的列表[],而Python里列表是不能用key: value这种写法的,字典也需要严格遵循键: 值的结构。

第一步:修正数据结构

首先得把你的销售数据改成Python能识别的格式,这里给你两种常用的正确结构:

方案1:按列组织的字典(适合批量处理列数据)

把每个列名作为字典的键,对应的值是该列的所有数据列表:

cookie_sales = {
    'Name': ['Sue', 'Feeny', 'Jimmy', 'Seymour', 'Shawn', 'Corey', 'Anne', 'Terry', 'Derek', 'Sammy', 'Topanga', 'Alan', 'Mark', 'Joe', 'Elliot'],
    'Age': [23, 99, 23, 11, 31, 55, 35, 44, 71, 41, 39, 22, 16, 25, 32],
    'Boxes Sold': [12, 8, 15, 5, 20, 10, 18, 14, 7, 16, 19, 9, 6, 11, 13]  # 我补全了示例数据,你可以替换成真实值
}

方案2:按行组织的列表(适合单条记录管理)

列表里的每个元素是一个字典,代表一条完整的销售记录:

cookie_sales = [
    {'Name': 'Sue', 'Age': 23, 'Boxes Sold': 12},
    {'Name': 'Feeny', 'Age': 99, 'Boxes Sold': 8},
    {'Name': 'Jimmy', 'Age': 23, 'Boxes Sold': 15},
    {'Name': 'Seymour', 'Age': 11, 'Boxes Sold': 5},
    {'Name': 'Shawn', 'Age': 31, 'Boxes Sold': 20},
    {'Name': 'Corey', 'Age': 55, 'Boxes Sold': 10},
    {'Name': 'Anne', 'Age': 35, 'Boxes Sold': 18},
    {'Name': 'Terry', 'Age': 44, 'Boxes Sold': 14},
    {'Name': 'Derek', 'Age': 71, 'Boxes Sold': 7},
    {'Name': 'Sammy', 'Age': 41, 'Boxes Sold': 16},
    {'Name': 'Topanga', 'Age': 39, 'Boxes Sold': 19},
    {'Name': 'Alan', 'Age': 22, 'Boxes Sold': 9},
    {'Name': 'Mark', 'Age': 16, 'Boxes Sold': 6},
    {'Name': 'Joe', 'Age': 25, 'Boxes Sold': 11},
    {'Name': 'Elliot', 'Age': 32, 'Boxes Sold': 13}
]

第二步:完整写入Excel的代码

根据你选的结构,用xlsxwriter完成写入:

对应方案1的完整代码

import xlsxwriter

# 按列组织的数据
cookie_sales = {
    'Name': ['Sue', 'Feeny', 'Jimmy', 'Seymour', 'Shawn', 'Corey', 'Anne', 'Terry', 'Derek', 'Sammy', 'Topanga', 'Alan', 'Mark', 'Joe', 'Elliot'],
    'Age': [23, 99, 23, 11, 31, 55, 35, 44, 71, 41, 39, 22, 16, 25, 32],
    'Boxes Sold': [12, 8, 15, 5, 20, 10, 18, 14, 7, 16, 19, 9, 6, 11, 13]
}

# 创建工作簿和工作表
workbook = xlsxwriter.Workbook('hello2.xlsx')
worksheet = workbook.add_worksheet()

# 写入表头(字典的键)
current_row = 0
for col, header in enumerate(cookie_sales.keys()):
    worksheet.write(current_row, col, header)

# 写入每列的数据
current_row += 1
for col, data_list in enumerate(cookie_sales.values()):
    for row_idx, value in enumerate(data_list, start=current_row):
        worksheet.write(row_idx, col, value)

# 必须关闭工作簿,否则文件会损坏
workbook.close()

对应方案2的完整代码

import xlsxwriter

# 按行组织的数据
cookie_sales = [
    {'Name': 'Sue', 'Age': 23, 'Boxes Sold': 12},
    {'Name': 'Feeny', 'Age': 99, 'Boxes Sold': 8},
    {'Name': 'Jimmy', 'Age': 23, 'Boxes Sold': 15},
    {'Name': 'Seymour', 'Age': 11, 'Boxes Sold': 5},
    {'Name': 'Shawn', 'Age': 31, 'Boxes Sold': 20},
    {'Name': 'Corey', 'Age': 55, 'Boxes Sold': 10},
    {'Name': 'Anne', 'Age': 35, 'Boxes Sold': 18},
    {'Name': 'Terry', 'Age': 44, 'Boxes Sold': 14},
    {'Name': 'Derek', 'Age': 71, 'Boxes Sold': 7},
    {'Name': 'Sammy', 'Age': 41, 'Boxes Sold': 16},
    {'Name': 'Topanga', 'Age': 39, 'Boxes Sold': 19},
    {'Name': 'Alan', 'Age': 22, 'Boxes Sold': 9},
    {'Name': 'Mark', 'Age': 16, 'Boxes Sold': 6},
    {'Name': 'Joe', 'Age': 25, 'Boxes Sold': 11},
    {'Name': 'Elliot', 'Age': 32, 'Boxes Sold': 13}
]

workbook = xlsxwriter.Workbook('hello2.xlsx')
worksheet = workbook.add_worksheet()

# 写入表头(取第一条记录的键)
headers = cookie_sales[0].keys()
for col, header in enumerate(headers):
    worksheet.write(0, col, header)

# 写入每行数据
for row, record in enumerate(cookie_sales, start=1):
    for col, value in enumerate(record.values()):
        worksheet.write(row, col, value)

workbook.close()

关键注意点

  • 一定要记得调用workbook.close(),否则Excel文件会无法正常打开甚至损坏。
  • 如果你的Boxes Sold有真实数据,直接替换我示例里的数值就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:30:54