在Python中检测excel文件的EOF

时间:2010-09-24 04:15:58

标签: python excel

我编写了一个代码,用于使用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。为什么呢?

谢谢!

3 个答案:

答案 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)