在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)