Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
单元格中的Python openpyxl循环数据_Python_Python 3.x_Openpyxl - Fatal编程技术网

单元格中的Python openpyxl循环数据

单元格中的Python openpyxl循环数据,python,python-3.x,openpyxl,Python,Python 3.x,Openpyxl,我试图将值2循环到给定范围内的单元格中,但当脚本运行并检查excel工作表时,单元格为空 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(r

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

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

有两个问题

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

cell.value = 2
第二,
对于cell\u范围中的单元格,实际上返回包含单元格列的元组。因此,正确的迭代方法是:

for each_column in cell_range:
    for cell in each_column :
        cell.value = 2
cell=2
不起作用的原因是赋值使名称引用对象。分配前,名称
单元格
指的是
单元格范围
中的一个单元格。在后面,名称
单元格
指的是整数对象
2
。名称
cell
引用的cell对象不受此赋值的影响

但是如果这是真的,为什么
ws['A4']=4
起作用呢?那是因为
ws['A4']=4
不是赋值!它实际上是方法调用的语法糖。因为它是一个方法调用,所以它实际上可以改变一个对象,而不只是让一个名称在正常赋值中引用一个对象。

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

有两个问题

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

cell.value = 2
第二,
对于cell\u范围中的单元格,实际上返回包含单元格列的元组。因此,正确的迭代方法是:

for each_column in cell_range:
    for cell in each_column :
        cell.value = 2
cell=2
不起作用的原因是赋值使名称引用对象。分配前,名称
单元格
指的是
单元格范围
中的一个单元格。在后面,名称
单元格
指的是整数对象
2
。名称
cell
引用的cell对象不受此赋值的影响


但是如果这是真的,为什么
ws['A4']=4
起作用呢?那是因为
ws['A4']=4
不是赋值!它实际上是方法调用的语法糖。因为它是一个方法调用,所以它实际上可以改变一个对象,而不是像普通赋值那样让一个名称引用一个对象。

AttributeError:“tuple”对象没有属性“value”@cojoe:我需要看看你的代码。这意味着
cell
引用了一个元组,但您的代码表明了另一种情况。对于枚举(单元格范围)中的单元格,您是否像这样进行迭代:?AttributeError:“tuple”对象没有属性“value”@cojoe:我需要查看您的代码。这意味着
cell
引用了一个元组,但您的代码表明了另一种情况。对于enumerate(cell_范围)中的cell,您是否像这样进行迭代:?