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

如何将一维数组写入Excel工作表?openpyxl TypeError问题排查

解决openpyxl写入一维数据的TypeError问题

我来帮你搞定这个问题!你遇到的TypeError是因为ws.append()期望接收列表、元组、生成器这类可迭代对象,但如果不小心传入了单个字符串就会触发这个错误。既然你打算改用ws.cell(row=i, column=j)来手动控制单元格写入,那我们可以通过循环遍历数据的方式,逐个把值填充到对应的单元格中。

完整代码示例

from openpyxl import Workbook

wb = Workbook()
ws = wb.active
data = [
    ["Fruit", "Quantity"],
    ["Kiwi", 3],
    ["Grape", 15],
    ["Apple", 3],
    ["Peach", 8]  # 补充你省略的数值
]

# 遍历数据的每一行,行索引从1开始
for row_idx, row_data in enumerate(data, start=1):
    # 遍历当前行的每个元素,列索引从1开始
    for col_idx, value in enumerate(row_data, start=1):
        # 指定单元格并赋值
        ws.cell(row=row_idx, column=col_idx, value=value)

# 保存工作簿
wb.save("fruit_quantity.xlsx")

关键说明

  • 索引起始值:openpyxl中的行和列索引都是从1开始的,所以用enumerate(..., start=1)来直接对应单元格的位置,不用再手动加1。
  • 数据兼容性:不管你的子列表是一维的(比如每行两个元素)还是更长的,这个循环都能自动适配,把每个元素放到对应的单元格里。
  • 避免错误:这种方式完全绕开了ws.append()对输入类型的限制,你可以精准控制每个单元格的内容,不会再出现传入单个字符串的类型错误。

如果你的数据是单纯的一维数组(比如["Kiwi", "Grape", "Apple"]),也可以用类似的逻辑,只需要调整循环的维度:

one_dimensional_data = ["Kiwi", "Grape", "Apple", "Peach"]
for col_idx, value in enumerate(one_dimensional_data, start=1):
    ws.cell(row=1, column=col_idx, value=value)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:46:23