Python 单元格中的 openpyxl 循环数据

Python openpyxl loop data in cells

我试图将值 2 循环到给定范围内的单元格中,但是当脚本运行并且我检查我的 excel sheet 单元格为空时。

from openpyxl import Workbook

wb = Workbook()

ws = wb.active

n = 1
ws.title = 'Day '+str(n)

ws['A1'] = 42


import datetime

ws['A2'] = datetime.datetime.now()

c = ws['A4']
ws['A4'] = 4

d = ws.cell(row=4, column=2, value=10)

cell_range = ws['A5':'A7']

for cell in cell_range:
    cell.value = 2

wb.save("sample.xlsx")

这里有什么错误?

(注意:问题最初将有问题的作业列为 cell = 2

有两个问题。

首先,为了给单元格赋值,请将值赋给单元格的 value 属性:

cell.value = 2

其次,for cell in cell_range 实际上 returns 包含单元格列的元组。所以正确的迭代方式是:

for each_column in cell_range:
    for cell in each_column :
        cell.value = 2

cell = 2 不起作用的原因是赋值使名称引用对象。在赋值之前,名称 cell 引用了 cell_range 中的一个单元格。后记,名称cell指的是整型对象2。名称 cell 引用的单元格对象不受此分配的影响。

但如果这是真的,为什么 ws['A4'] = 4 有效?那是因为 ws['A4'] = 4 不是赋值!它实际上是方法调用的语法糖 ws.__setitem__('A4', 4)。因为它是一个方法调用,所以它实际上可以改变一个对象,而不是像在正常赋值中那样仅仅使一个名称引用一个对象。