如何将一维数组写入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
相关产品推荐
相关产品推荐

