我编写了一些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
就使用
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
...