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)
。因为它是一个方法调用,所以它实际上可以改变一个对象,而不是像在正常赋值中那样仅仅使一个名称引用一个对象。
我试图将值 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)
。因为它是一个方法调用,所以它实际上可以改变一个对象,而不是像在正常赋值中那样仅仅使一个名称引用一个对象。