前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python】已解决报错AttributeError: ‘Worksheet‘ object has no attribute ‘get_highest_row‘ 的解决办法

【Python】已解决报错AttributeError: ‘Worksheet‘ object has no attribute ‘get_highest_row‘ 的解决办法

作者头像
程序员洲洲
发布2024-06-15 12:38:37
920
发布2024-06-15 12:38:37
举报
文章被收录于专栏:项目文章项目文章

【Python】已解决报错AttributeError: ‘Worksheet’ object has no attribute ‘get_highest_row’ 的解决办法

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 🤓 同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章。

前言

今天写Python的时候,遇到了这个问题:

代码语言:javascript
复制
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'

我们来简单看看源代码是什么样的。

代码语言:javascript
复制
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的方法或属性。

错误示例:

代码语言:javascript
复制
from openpyxl import load_workbook

wb = load_workbook('example.xlsx')
ws = wb['Sheet1']
highest_row = ws.get_highest_row()  # 错误:不存在此方法

库的版本问题

如果使用的Excel操作库版本不支持某个方法或属性,也可能导致此错误。

混淆不同的库或方法

开发者可能从其他库或文档中看到了类似的方法,但在使用的库中并不存在。

二、解决方案

解决方案一:使用正确的方法获取最大行数

对于openpyxl库,可以使用max_row属性来获取工作表中的最大行数。

代码语言:javascript
复制
from openpyxl import load_workbook

wb = load_workbook('example.xlsx')
ws = wb['Sheet1']
highest_row = ws.max_row  # 正确使用max_row属性

解决方案二:检查库的版本

确保使用的库版本支持所需的功能。如果不支持,考虑升级库版本。

代码语言:javascript
复制
# 检查openpyxl的版本
import openpyxl
print(openpyxl.__version__)

# 如果版本过低,可以使用pip进行升级
# pip install --upgrade openpyxl

解决方案三:使用其他库或方法

如果openpyxl不满足需求,可以考虑使用其他库,如xlsxwriter或pandas。

代码语言:javascript
复制
# 使用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两个方法。

所以我们只需要把两个方法改掉即可!

注意事项

  • 在使用任何库之前,确保阅读官方文档,了解支持的方法和属性。
  • 检查并确保使用的库版本是最新的,以获得最佳的功能支持和安全更新。
  • 在尝试调用某个方法或属性之前,使用诸如dir()的函数或IDE的自动完成功能来验证其存在性。
  • 如果遇到库不支持的功能,考虑使用其他库或编写自定义函数来实现所需功能。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、问题分析
    • 错误的属性或方法调用
      • 库的版本问题
        • 混淆不同的库或方法
        • 二、解决方案
          • 解决方案一:使用正确的方法获取最大行数
            • 解决方案二:检查库的版本
              • 解决方案三:使用其他库或方法
                • 解决方案四(推荐使用)
                • 注意事项
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档