Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中excel文件的EOF检测_Python_Excel - Fatal编程技术网

Python中excel文件的EOF检测

Python中excel文件的EOF检测,python,excel,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,但它不工作,它会

我编写了一段代码,用于使用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 has no len错误。为什么?


谢谢

这就是你的问题:

if type(x) is None:
如果x为None,则其类型为NoneType。因此,这是从来没有的,所以你永远看不到空白单元格,你最终试图得到一个没有长度。 相反,写下:

if x is None:

看起来您正在使用pywin32com您不需要循环查找“EOF”(您指的是工作表的结尾,而不是文件的结尾)

如果
xlws
引用了工作表对象,则可以使用以下方法:

used = xlws.UsedRange
nrows = used.Row + used.Rows.Count - 1
获取工作表中的有效行数
used.Row
是第一个使用的行的行号,并且
used.Rows.Count
的含义应该非常明显


备选方案:使用。。。[dis]claimer:我是作者。

如其他评论中所述,您也可以使用“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)

我一直在使用xlrd和xlwt:)哇,这更好!我也想使用xlrd,但我的xls文件受密码保护