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

openpyxl中Worksheet.row_dimensions类型提示异常及传入整数触发警告的问题

openpyxl中Worksheet.row_dimensions类型提示异常及传入整数触发警告的问题

你遇到的这个情况我之前在项目里也碰见过,明明代码运行完全正常,行高确实设置成功了,但类型检查工具偏要跳出警告,还不能用#noqa来忽略,确实挺闹心的😅

问题根源

这个警告其实是openpyxl的类型注解和实际运行逻辑不匹配导致的:

  • 官方给Worksheet.row_dimensions的类型定义里,要求传入的行索引必须是字符串类型(比如"1")
  • 但实际的运行代码是兼容整数索引的(比如1),所以代码能跑通,但类型检查器(比如Pyright、Mypy)会因为不符合类型注解而抛出警告

解决方法

既然不能忽略警告,那我们就严格按照类型注解的要求来写代码,同时不影响功能,给你两个实用方案:

方案1:直接将整数转为字符串传入

这是最直接的无侵入方案,只需要把你原来的代码改一行:

# 原来的代码(触发警告)
ws.row_dimensions[1].height = 25
# 修改后的代码(无警告)
ws.row_dimensions[str(1)].height = 25

这样既完全符合类型注解的要求,类型检查器不会再报错,同时运行逻辑和原来完全一致,行高设置正常。

方案2:封装工具函数简化调用

如果你需要频繁设置行高,不想每次都手动转字符串,可以自己封装一个小函数:

import openpyxl
from openpyxl.worksheet.worksheet import Worksheet

def set_row_height(ws: Worksheet, row_index: int, height: float):
    """给指定行设置高度,自动处理类型转换"""
    ws.row_dimensions[str(row_index)].height = height

# 调用示例
wb = openpyxl.load_workbook('your_workbook.xlsx')
ws: Worksheet = wb.active
set_row_height(ws, 1, 25)
wb.save('your_workbook.xlsx')

这样每次调用的时候直接传整数就行,内部自动转成字符串,既符合类型要求,又能保持代码的可读性。

补充说明

你用的openpyxl 3.1.2是目前的最新稳定版,这个类型注解的小问题暂时还没被官方修复,但我们通过上面的方法完全可以绕开,而且不会对代码的功能和可维护性造成影响。

备注:内容来源于stack exchange,提问作者FluidMechanics Potential Flows

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 09:54:33