每日10行代码78:openpyxl获取真正的最大数据行数
程序员文章站
2022-05-27 14:51:37
...
openpyxl里sheet.max_row可以获取最大行,但是这个变量有个问题,就是对那些原先有数据,后来又删除的表,容易出现获取最大行不是所需要值的情况,这是因为openpyxl把一些格式改变过的单元格也算成有效行了。
我写了一个函数来获取真正有效的最大数据行:
import openpyxl
filename = 'test_max_row.xlsx'
wb=openpyxl.load_workbook(filename)
ws = wb.active
i= ws.max_row
print("max_row获得的最大行是:",i)
# print(type(ws.cell(1,2).value))
def get_max_row(sheet):
i=sheet.max_row
real_max_row = 0
while i > 0:
row_dict = {i.value for i in sheet[i]}
if row_dict == {None}:
i = i-1
else:
real_max_row = i
break
return real_max_row
j = get_max_row(ws)
print("通过自定义函数获取到的最大行是:", j)
输出结果:
max_row获得的最大行是: 7
通过自定义函数获取到的最大行是: 3
可以看出两个的结果是不一样的。
测试表格是这样的:
因为第7行的数据我给定义一个数据格式,max_row取得的最大行就是7了,这显然不是我们想要的,由此造成的结果就是我们用max_row的话,会造成某些时候处理了不需要的行。
上一篇: File
下一篇: 秋季宜进补,痛风的朋友,您吃对了吗?