我编写了一个代码,用于使用python检测excel文件的EOF:
row_no = 1
while True:
x = xlws.Cells(row_no,1).value
if type(x) is None:
break
else:
print(len(x))
print(x)
row_no = row_no + 1
我希望while循环将停止然后x变成一个“空白单元格”,我支持为None,但它不起作用,它转到len(x)并提示我一个错误的NoneType没有LEN。为什么呢?
谢谢!
答案 0 :(得分:4)
这是你的问题:
if type(x) is None:
如果x为None,则其类型为NoneType。因此,这永远不会成立,因此您永远不会看到空白单元格,并且您最终会尝试获得无长度。
相反,写一下:
if x is None:
答案 1 :(得分:3)
看起来你正在使用pywin32com ...... 你不需要循环找到“EOF”(你的意思是表的结尾,而不是文件的结尾)。
如果xlws
引用了Worksheet对象,则可以使用:
used = xlws.UsedRange
nrows = used.Row + used.Rows.Count - 1
获取工作表中的有效行数。 used.Row
是第一个使用行的从1开始的行号,used.Rows.Count
的含义应该相当明显。
替代方案:使用xlrd ... [dis] claimer:我是作者。
答案 2 :(得分:0)
如其他评论中所述,您也可以使用'xlrd'来了解excel文件的限制:
workbook = xlrd.open_workbook (excel_loc)
excel_sheet = workbook.sheet_by_index(0)
print("no of rows: %d" %excel_sheet.nrows)
print("no of cols: %d" %excel_sheet.ncols)