使用 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
.
中添加 row
和 col
参数的值
我需要添加从第 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
.
row
和 col
参数的值