如何在Excel中循环列直到出现空单元格

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

我编写了一些Python代码,它循环遍历Excel工作表并从单元格中提取字符串。我希望循环一旦到达空单元格就停止。如果我在最后一个单元格中放置一个字符串(例如“Stop”)并使用代码

while sheet.cell_value(r, c) != "Stop"
,其中
r
c
是行和列,我就可以让它工作。但是,如果我更改为
!= ''
,则不起作用。当细胞中有东西时,循环就会运行。一旦代码到达我希望其停止的空单元格,我就会收到错误消息:“IndexError:列表索引超出范围”

任何帮助表示赞赏!

r = 14
c = 2
      
while sheet.cell_value(r, c) != '':
    # do something....
    r+=1
python excel string xlrd nonetype
1个回答
0
投票

就使用

xlrd
而言,空单元格被标记为空字符串,而不是
None
。所以这段代码在这方面是正确的。但数据区域看起来与 Excel 中看到的不同。与 Excel 始终在屏幕上显示所有可能的单元格不同,xlrd 读取器仅寻址已使用的范围。如果没有空单元格,则发布的代码将在某些时候超出允许的地址空间的限制。因此,不仅检查空单元格,还检查行和列约束,即
sheet.nrows
sheet.ncols

是正确的
r = 14
c = 2
      
while r < sheet.nrows and sheet.cell_value(r, c) != '':
    # do something....
    r+=1

我们也可以使用 sheet.col_values 来达到同样的目的:

EXIT_VALUE = ''
for x in sh.col_values(c, start_rowx=r):
    if x == EXIT_VALUE:
        break
    ...
© www.soinside.com 2019 - 2024. All rights reserved.