每日10行代码78:openpyxl获取真正的最大数据行数

博客指出openpyxl里sheet.max_row获取最大行时,对曾有数据后删除的表,易出现获取值非所需的情况,因它会把格式改变的单元格算成有效行,还提到写了函数获取真正有效的最大数据行,用max_row可能处理不需要的行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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的话,会造成某些时候处理了不需要的行。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值