非类型单元格上的Openpyxl枚举

2024-04-30 02:18:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是打开一个有不匹配数据项的电子表格,并在列中逐行遍历它们,然后处理信息。当使用带有range(2, ws.max_row)的for循环进行迭代时,迭代将继续经过数据的最后一个实例(单元格a36),并继续迭代,并且不返回任何值,超出我期望ws.max_row参数在单元格a36处停止的位置

这就是我所尝试的:

for cell in range(2, ws.max_row):
   value = ws.cell(row=cell, column=1).value
   print(value)

输出显示包含数据的单元格值,然后在单元格a36之后继续输出空单元格,例如:

DPS ‐ Hot Springs ‐ 206 S Chicago Street 
None
None
None
None
None

A36是最后一个包含数据的单元格,我认为max_行与最后一个包含数据的行是等价的。有人知道是什么导致我的for循环随后继续吗


Tags: 数据实例none信息目标forwsvalue
2条回答

也许你的excel文件在你期望的最后一个数据单元格之外编辑了几个非类型单元格

有两种方法可以解决这个问题

  1. cell.value等于ur期望值时,在ur循环中设置一个break

  2. 检查您的excel文件是否有您意想不到的非类型单元格

如果列一直填充到最后一行(在本例中是第36行),为什么不使用while循环和break条件呢

大致如下:

row = 2
while True:
    value = ws.cell(row=row, column=1).value
    print(value)
    if value == None:
        break
    row += 1

正如@stovfl和@Charlie Clark所述,max_row不一定是数据中不None的最后一行。最好是直言不讳

相关问题 更多 >