Python中excel文件的EOF检测
我编写了一段代码,用于使用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,但它不工作,它会
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文件受密码保护