在Python中检测excel文件的EOF

我已经写了一个代码来检测使用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的错误。 为什么?

谢谢!

这是你的问题:

 if type(x) is None: 

如果x是None,那么它的types是NoneType。 因此,这是从来没有的,所以你永远不会看到空白的单元格,并最终试图获得None的长度。

相反,写:

 if x is None: 

它看起来像你正在使用pywin32com … 你不需要循环寻找“EOF” (你是指工作表的结束,而不是文件的结束)。

如果xlws引用一个Worksheet对象,则可以使用这个:

 used = xlws.UsedRange nrows = used.Row + used.Rows.Count - 1 

获取工作表中的有效行数。 used.Row是第一个使用行的从1开始的行号, used.Rows.Count的含义应该是比较明显的。

select:使用xlrd … [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)