python+openpyxl 获取最大行数,不是真正想获取的行数,导致替换时,报”NoneType' object has no attribute 'find'

问题描述:

使用excel对接口的数据进行管理,添加接口数据时,可能习惯性选择多行,设置了格式,导致多选了很多空行也被设置了格式,在读取这个sheet的最大行数时,发现有问题,获取到了为None的空行,导致后面的查找方法find,报错”AttributeError: 'NoneType' object has no attribute 'find'”

openpyxl分析:

openpyxl里sheet.max_row可以获取最大行,但是这个变量有个问题,就是对那些原先有数据,后来又删除的表,容易出现获取最大行不是所需要值的情况,这是因为openpyxl把一些格式改变过的单元格也算成有效行了。

具体问题:

截图:这个sheet的最大行数是19,实际通过openpyxl读取到的是79

python+openpyxl 获取最大行数,不是真正想获取的行数,导致替换时,报”NoneType' object has no attribute 'find'

 实际读取到的有79行,其他行,估计有做过单元格的格式,导致被openpyxl认为是有效的行

python+openpyxl 获取最大行数,不是真正想获取的行数,导致替换时,报”NoneType' object has no attribute 'find'

解决方案

1:尝试将空行的格式删除,再进行获取,发现获取到的最大行数还是有问题;不行

2:新建一个sheet,将需要的内容,复制过去,然后就可以正确获取行数了