使用openpyxl在Python3.6读取Excel单元格值时遇错误警告求助
为什么使用openpyxl的cell()方法会出现AttributeError和弃用警告?
咱们来拆解你遇到的两个问题:
1. 弃用警告的原因
你看到的UserWarning是因为当前版本的openpyxl已经不再推荐用ws.cell(coordinate)这种方式来获取单元格了,官方建议直接用ws[坐标字符串]的写法,比如sheet['I9'],这样更直观也符合新版本的API规范。
2. AttributeError的根源
你写的sheet.cell(9,9)是旧版本openpyxl的用法,但在你现在用的版本里,cell()方法的参数规则变了:
- 如果只传一个位置参数,它会被当作单元格的坐标字符串(比如'I9')来处理,方法内部会尝试调用这个参数的
upper()方法来统一大小写,但你传的是整数9,整数没有upper()方法,所以直接抛出了AttributeError。 - 如果你想通过行号和列号来获取单元格,必须显式指定参数名,告诉方法你传的是
row和column,而不是坐标字符串。
正确的写法
给你两种可行的解决方案:
方案一:使用单元格坐标字符串(推荐,符合官方新规范)
import openpyxl wb = openpyxl.load_workbook(r'C:\Users\xyz\Desktop\xxx.xlsx') sheet = wb.active v = sheet['I9'].value # 直接用坐标字符串 print(v)
方案二:显式指定row和column参数
import openpyxl wb = openpyxl.load_workbook(r'C:\Users\xyz\Desktop\xxx.xlsx') sheet = wb.active v = sheet.cell(row=9, column=9).value # 明确指定参数名 print(v)
这样就能同时解决警告和错误问题啦~
内容的提问来源于stack exchange,提问作者Kandan Siva
相关产品推荐
相关产品推荐

