使用 openpyxl 将列表中的元组添加到行中

Adding tuples inside a list into rows using openpyxl

我需要添加从第 2 行第 3 列开始的 arr 数据

|header-----|
|d1|d2|  |  |
|d1|d2|  |  |

arr = [('a','b'),('a','b')]

我已经尝试循环数据并使用单元格写入,但该值似乎在迭代时只支持 1 个值,我想还是我遗漏了什么?

for x in arr:
 cell(row=2,row=3).value = x

遇到错误:cannot convert ('a','b') to excel

问题

问题出在你的阵列上。

在您的循环中,您正在遍历一个列表,每个列表元素都是一个包含字符串的元组。

因此,在您的代码中,您将对循环中的每个元素都有这个:x = ('a','b')。这个元素是一个元组(在你的循环中用 type(x) 检查它)。您不能使用 openpyxl 将元组分配给单元格。


建议的解决方案

使用枚举两次:

starting_row = 2
Starting_col = 1
for row, tup in enumerate(arr):
  for col, val in enumerate(tup):
    cell(row=row+starting_row, column=col+starting_col).value = val
    print(row, col, value)
>>> 2 1 a
... 2 2 b
... 3 1 a
... 3 2 b

如果要更改起始行和列,只需在 cell().value.

中添加 rowcol 参数的值