欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

每日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

可以看出两个的结果是不一样的。
测试表格是这样的:
每日10行代码78:openpyxl获取真正的最大数据行数
因为第7行的数据我给定义一个数据格式,max_row取得的最大行就是7了,这显然不是我们想要的,由此造成的结果就是我们用max_row的话,会造成某些时候处理了不需要的行。