【Python】已解决报错AttributeError: ‘Worksheet’ object has no attribute ‘get_highest_row’ 的解决办法
😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 🤓 同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章。
今天写Python的时候,遇到了这个问题:
D:\>python test.py
test.py:5: DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]).
sheet = wb.get_sheet_by_name('Sheet1')
Traceback (most recent call last):
File "test.py", line 12, in <module>
print(sheet.get_highest_row())
AttributeError: 'Worksheet' object has no attribute 'get_highest_row'
print(sheet.get_highest_row())
AttributeError: 'Worksheet' object has no attribute 'get_highest_row'
我们来简单看看源代码是什么样的。
import openpyxl
wb = openpyxl.load_workbook('example.xlsx')
sheet = wb.get_sheet_by_name('Sheet1')
print(sheet.get_highest_row())
很多地方都有写:获取最大行的方法是:get_highest_row(),获取最大列的方法是:get_highest_row()。
那该怎么处理这个问题呢?
在使用Python进行Excel操作时,开发者可能会使用openpyxl或xlsxwriter等库来处理工作簿(Workbook)和工作表(Worksheet)。
然而,在尝试获取工作表中的最大行数时,可能会遇到AttributeError: ‘Worksheet’ object has no attribute 'get_highest_row’的错误。
这个错误表明尝试访问的方法或属性在Worksheet对象中不存在。
开发者可能错误地认为Worksheet对象有一个名为get_highest_row的方法或属性。
错误示例:
from openpyxl import load_workbook
wb = load_workbook('example.xlsx')
ws = wb['Sheet1']
highest_row = ws.get_highest_row() # 错误:不存在此方法
如果使用的Excel操作库版本不支持某个方法或属性,也可能导致此错误。
开发者可能从其他库或文档中看到了类似的方法,但在使用的库中并不存在。
对于openpyxl库,可以使用max_row属性来获取工作表中的最大行数。
from openpyxl import load_workbook
wb = load_workbook('example.xlsx')
ws = wb['Sheet1']
highest_row = ws.max_row # 正确使用max_row属性
确保使用的库版本支持所需的功能。如果不支持,考虑升级库版本。
# 检查openpyxl的版本
import openpyxl
print(openpyxl.__version__)
# 如果版本过低,可以使用pip进行升级
# pip install --upgrade openpyxl
如果openpyxl不满足需求,可以考虑使用其他库,如xlsxwriter或pandas。
# 使用pandas读取Excel并获取最大行数
import pandas as pd
df = pd.read_excel('example.xlsx')
highest_row = df.shape[0] # pandas DataFrame的最大行数
get_highest_row()和get_highest_column()在最新版的openpyxl模块中已经被删除了,取而代之的是max_row和max_column两个方法。
所以我们只需要把两个方法改掉即可!