我正在尝试读取指定行数的最后一个空单元格。
这是我的代码:
for j in xrange(0,REPEAT_CONST,1):
if r_sheet.cell_type(row+j,0)== xlrd.XL_CELL_EMPTY:
break
此代码仅在单元格早先写入并删除时才有效。如果从未编辑过单元格,则无效。不知道如何处理这个问题。 你能帮我做一下吗? 我将非常感谢你的支持。
此致 帕
答案 0 :(得分:0)
您遇到的错误表明rowx
或colx
参数超出范围for this sheet。
在小区访问功能中," rowx"是一个行索引,从零开始计算," colx"是一个列索引,从零开始计数。行/列索引和切片位置的负值以预期方式得到支持。
我刚刚发现了这一点(之前从未使用过XLRD),但如果您查询r_sheet.nrows
,我打赌您会发现该值小于row+j
。似乎xlrd只读取工作表的一部分,实质上是Excel中的UsedRange
。
所以你可以使用一些异常处理,try/catch
块,或者你可以这样做。请注意,只要row+j
大于该表的nrows
属性,就应该在布尔表达式的第一部分上短路。
if (row+j <= r_sheet.nrows-1) and (r_sheet.cell_value(row+j,0) = ''):
break
或者,甚至可能使用原始方法:
if (row+j <= r_sheet.nrows-1) and (r_sheet.cell_type(row+j,0)== xlrd.XL_CELL_EMPTY):
break