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

XlsxWriter遍历工作表报错TypeError,如何批量写入A1单元格?

解决XlsxWriter遍历工作表时的TypeError问题

你遇到的错误有两个核心原因,直接修正即可解决:

  1. 错误的工作表列表获取方式:workbook.worksheets是类方法而非属性,必须通过workbook.worksheets()调用才能返回所有工作表的可迭代列表,直接使用方法名会触发"method object is not iterable"错误。
  2. enumerate的错误使用:enumerate()返回的是(索引, 工作表对象)的元组,你直接将元组赋值给WS后调用write(),自然会因为元组没有该方法报错。

修正后的代码(两种可选方案)

方案1:直接遍历工作表列表(无需索引)

workbook = xlsxwriter.Workbook('test.xlsx',{'nan_inf_to_errors': True})
WS1 = workbook.add_worksheet('Sheet A')
WS2 = workbook.add_worksheet('Sheet B')
WS3 = workbook.add_worksheet('Sheet C')  # 原代码重复赋值给WS2,建议改为新变量避免覆盖

for ws in workbook.worksheets():
    ws.write('A1','Hello!')

workbook.close()

方案2:保留enumerate(需要使用索引时)

如果你需要用到工作表的索引,可以正确解包enumerate返回的元组:

workbook = xlsxwriter.Workbook('test.xlsx',{'nan_inf_to_errors': True})
WS1 = workbook.add_worksheet('Sheet A')
WS2 = workbook.add_worksheet('Sheet B')
WS3 = workbook.add_worksheet('Sheet C')

for idx, ws in enumerate(workbook.worksheets()):
    ws.write('A1','Hello!')
    # 可选:利用索引做额外操作,比如打印进度
    # print(f"已完成第{idx+1}个工作表的写入")

workbook.close()

额外提示

原代码中WS2 = workbook.add_worksheet('Sheet C')会覆盖掉Sheet B的工作表对象,虽然不影响遍历操作,但后续如果需要单独操作Sheet B会找不到对应的对象,建议改为WS3这类新变量名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:55:30