我正在使用一个Excel工作表,该工作表的总行数为999,其中20行是数据填充行,其他则为空。
所以当我打印max_rows时,它给了我999个数字而不是20个数字!我正在关注本教程-openpyxl tutorial
wb = openpyxl.load_workbook(path)
s = wb.active
print(s.max_row)
答案 0 :(得分:2)
这是预期的。根据文档max_row
返回
包含数据的最大行索引(从1开始)
即最大行索引,而不是包含数据的行数。如果您只有例如第100行,您将获得100,而不是1
答案 1 :(得分:1)
如果要使用openpyxl,则需要自己计算一下
wb = openpyxl.load_workbook(path)
ws = wb.active
count = 0
for row in ws:
if not all([cell.value == None for cell in row]):
count += 1
print(count)
或
wb = openpyxl.load_workbook(path)
ws = wb.active
print(len([row for row in ws if not all([cell.value == None for cell in row])]))
说明
如果一个单元格在xlsx中没有任何值,则在获得其值时就等于None
。仅在一行根本没有任何数据时才触发检查cell.value == None for cell in row
。您可以轻松地将all
交换为any
,以不计算具有任何空字段的行。
答案 2 :(得分:0)
我发现我不得不使用
if not all([ (cell.value == None or cell.value =='') for cell in row]):
不计算包含格式的空白单元格。否则,对于 .xlsx 文件,我会得到大约 1048535 的计数。