openpyxl - 虽然循环运行无限,但IF条件下的类似逻辑运行正常。不知道问题出在哪里

问题描述 投票:0回答:1

我有一个列,其中包含学生标记的多个值,两者之间存在间隙。我需要在列中的空白单元格之前选择最后一个值。

我正在进行下面的检查,直到下一个单元格为None并尝试保存该值。但不知怎的,我的while循环运行没有停止,虽然计数器正确递增。如果我使用IF执行类似的逻辑,它会按预期正确打印每个下一个值。

for cell in row:
    if cell.value == "TEST level":
        print("Marks:")
        row_num=1
        while ("{1}".format(cell.value, cell.offset(row=row_num, column=0).value)) is not None:
            print("Inside While loop")
            last_marks = "{1}".format(cell.value, cell.offset(row=row_num, column=0).value)
            row_num=row_num+1
        print(last_marks)

我无法找到逻辑出错的地方。有人可以指出我的错误并让我朝着正确的方向前进吗?谢谢。

python-3.x openpyxl
1个回答
0
投票

代码现在已不完整,但您不断将行计数器重置为1,而您的while条件始终为true。将代码分解为单独的部分更有意义:首先,找到相关的单元格;第二,对该列中的其余单元格执行您想要执行的操作。从你正在搜索的代码中仍然不清楚。

for row in ws:
    for cell in row:
        if cell.value == "TEST level":
             break

for row in ws.iter_rows(min_row=cell.row+1, min_col=cell.column, max_col=cell.column):
    cell = row[0]
    print("Last marks {0} {1}".format(cell.coordinate, cell.value))

这似乎与您的代码相匹配,但不一定是您问题中的逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.