【问题标题】:OpenPyXl - TypeError: cannot unpack non-iterable NoneType objectOpenPyXl - TypeError:无法解压不可迭代的 NoneType 对象
【发布时间】:2020-03-02 05:28:53
【问题描述】:

我希望在 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 行找到第一个空白单元格 - 然后返回坐标

【问题讨论】:

    标签: python-3.x openpyxl


    【解决方案1】:

    认为我找到了解决方法。 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
    

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

    谢谢大家

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 2020-01-28
      • 1970-01-01
      相关资源
      最近更新 更多