无法使用 openpyxl 解决“_WorkbookChild”没有属性“max_row”[attr-defined]'警告

问题描述 投票:0回答:2

使用下面的 python 文件,我无法解决 mypy 错误。

import openpyxl

inputWorkbook = openpyxl.load_workbook("input.xlsx")
activeSheet = inputWorkbook.active
if activeSheet:
    print(activeSheet.max_row)

我不断收到此错误

test.py:6: error: "_WorkbookChild" has no attribute "max_row"  [attr-defined]
。查看文档我不明白问题是什么。 openpyxl.workbook.workbook().active 返回类型 openpyxl.worksheet.worksheet.Worksheet 其中包括 max_row.

  • Python 3.11.3
  • mypy 1.3.0
  • mypy 扩展 1.0.0
  • openpyxl 3.1.2
python python-3.x openpyxl mypy
2个回答
0
投票

openpyxl.workbook.workbook.Workbook.active
属性被输入为返回
openpyxl.workbook.child._WorkbookChild
并且
max_row attribute
不存在于
_WorkbookChild
中,这是由于静态类型检查所致。

添加

type: ignore
评论,应该可以解决警告问题。

import openpyxl

inputWorkbook = openpyxl.load_workbook("input.xlsx")
activeSheet = inputWorkbook.active
if activeSheet:
    print(activeSheet.max_row)  # type: ignore

0
投票

这是由于 内置类型 造成的,它与实际实现略有不同(不太清楚为什么,如果其他人可以阐明的话)。一些选项是:

    import openpyxl
    from openpyxl.worksheet.worksheet import Worksheet
    from typing import cast
    
    inputWorkbook = openpyxl.load_workbook("input.xlsx")
    activeSheet = cast( Worksheet, inputWorkbook.active )
    if activeSheet:
        print(activeSheet.max_row)
© www.soinside.com 2019 - 2024. All rights reserved.