OpenPyXl-TypeError:无法解压缩不可迭代的NoneType对象



我想在Excel行中找到第一个空白单元格值,然后将该值的数值坐标(即'B2' = 2,2(传递回变量。

如果单元格有一个值,那么它就可以了,并返回坐标。我已经使用进行了测试

for row in sta_wb_primetime.iter_rows(min_row=start_row, max_row=end_row, min_col=start_col):
for cell in row:
***if cell.value is not None:***
return cell.row, cell.column`

然而,当我运行正确的代码块时:

#Find start point for Excel pasting (Master File)
def find_start_col(start_row, end_row, start_col):
for row in wb.iter_rows(min_row=start_row, max_row=end_row, min_col=start_col):
for cell in row:
if cell.value is None:
return cell.row, cell.column
break
else:
continue  # only executed if the inner loop did NOT break
break  # only executed if the inner loop DID break

sun_row, sun_col = find_start_col(start_row=3, end_row=3, start_col=2)
mon_row, mon_col = find_start_col(start_row=12, end_row=12, start_col=2)

... (ongoing for rest of week)

我得到这个:

Traceback(最后一次调用(:文件"C:\Users/mattj/Desktop/Python Scripts/ScratchPad/dev_Scripts/tester_File.py",第49行,位于sun_row,sun_col=find_start_col(start_row=3,end_row=3,start_col=2(TypeError:无法解压缩不可迭代的NoneType对象

我只需要找到第3行的第一个空白单元格,然后返回coords

我想我找到了一个解决办法。Openpyxl似乎不喜欢在值为None时返回结果,但在not None时对contine来说似乎可以,并将结果作为else条件返回。

for row in wb.iter_rows(min_row=start_row, max_row=end_row, min_col=start_col):
for cell in row:
# print(cell)
if cell.value is not None:
continue
else:
return cell.row, cell.column
else:
continue  # only executed if the inner loop did NOT break

希望这能帮助其他人!我仍然很想知道如何扭转条件导致的成功结果

感谢所有

最新更新