You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为openpyxl只读工作表添加正确的类型注解?

解决方法

问题根源在于你错误地将只读模式下的工作簿注解为普通xl.Workbook类型,导致后续工作表的类型与__getitem__的签名不匹配。以下是修正后的代码:

from pathlib import Path
import openpyxl as xl
from openpyxl.workbook.read_only import ReadOnlyWorkbook
from openpyxl.worksheet._read_only import ReadOnlyWorksheet

excel_file = Path("./xl.xlsx")
# 正确注解只读模式的工作簿类型
wb: ReadOnlyWorkbook = xl.load_workbook(
    excel_file, read_only=True, data_only=True, keep_links=False
)
ws: ReadOnlyWorksheet = wb["hello world"]
x = ws[1]

如果types-openpyxl的类型定义仍存在细微缺陷,可临时用类型忽略注释跳过该行检查:

x = ws[1]  # type: ignore

补充说明

当load_workbook传入read_only=True时,返回的是ReadOnlyWorkbook实例而非普通Workbook,二者的工作表获取逻辑对应的类型定义不同。修正工作簿的类型注解后,工作表的类型就能正确匹配__getitem__的参数要求。

内容的提问来源于stack exchange,提问作者bzm3r

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:30:56