Python嵌套循环,輸入excel

问题遇到的现象和发生背景

Python

问题相关代码,请勿粘贴截图

from openpyxl import Workbook

將數据輸入excel

wb = Workbook()
ws = wb.active

方式一

data1 = [1,2,3]
index=0
for row in ws["A1:C1"]:
for cell in row:
cell.value = data1[index]
index+=1

''
方式一 我理解的執行狀況
row[0] = ws["A1"]
cell[0] = row[0] = ws["A1"]
ws["A1"].value = data1[0]
cell 下一個元素 ws["B1"]
ws["B1"].value = data1[1]
''

方式二

data2 = [1,2,3]
i = 0
for cell in ws["A2:C2"]:
cell.value = data2[i] # 為什麼不能執行? 我想將嵌套for 简化成一个for
i +=1

''
方式二 我理解的執行狀況
cell[0] = ws["A2"]
ws["A2"].value = data2[0]
cell 下一個元素 ws["B2"]
ws["B2"].value = data2[1]
''
wb.save("嵌套迴圈疑問.xlsx")

运行结果及报错内容

Exception has occurred: AttributeError
'tuple' object has no attribute 'value'

我的解答思路和尝试过的方法

解答思路在方式一,二 我理解的執行狀況中

我想要达到的结果

如果我对for in , 或其他代碼的理解有錯,希望可以指出

想要使用一个for循环便將 data 的資料輸入excel中

是这个意思吗?

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

data1 = [[1, 2, 3], [2, 3, 4]]
for _ in data1:
    ws.append(_)
   
wb.save("xx.xlsx")

img

如果你的疑问是:
for cell in ws["A2:C2"]:
cell.value = data2[i] # 為什麼不能執行? 我想將嵌套for 简化成一个for

那是因为ws["A2:C2"]是一个二维元组,里面的每个元素是代表一列数据的元组。所以如果只使用一个for,则这里的cell变量为包含一列数据的元组,所以无法使用value属性为元组赋值。
有什么疑问的话可以在for里加一句print(cell)看一下就明白了。

因为ws["A2:C2"]返回是一个二维元组,里面一维元组是一行的子元组 第二维是每一行中的单元格
二维元组就应该用双重循环,不过你ws["A2:C2"]只有一行
print(ws["A2:C2"])输出

img

可以用ws["A2:C2"][0]获取这一行,只用一个循环这一行即可

data2 = [1,2,3]
i = 0
for cell in ws["A2:C2"][0]: #ws["A2:C2"]之后加[0]只取一行
    cell.value = data2[i]
    i +=1

ws["A2:C2"]是一个二维元组,需要使用用双重循环去获取对应位置的value