问题现象及背景
openpyxl加载excel文件时,报错提示TypeError: init() got an unexpected keyword argument 'state'
代码片段
workbook = openpyxl.load_workbook(filename=self.calibration['case_path'], data_only=True) # 获取用例excel表格对象
worksheet = workbook.worksheets[self.calibration['start_sheet']]
运行结果
File "D:\PythonWorkSpace\Auto_test_wuhan\function_test\Compare_Loop.py", line 129, in run
workbook = openpyxl.load_workbook(filename=self.calibration['case_path'], data_only=True) # 获取用例excel表格对象
File "D:\Python3.8.6\lib\site-packages\openpyxl\reader\excel.py", line 346, in load_workbook
reader.read()
File "D:\Python3.8.6\lib\site-packages\openpyxl\reader\excel.py", line 301, in read
self.read_worksheets()
File "D:\Python3.8.6\lib\site-packages\openpyxl\reader\excel.py", line 237, in read_worksheets
ws_parser.bind_all()
File "D:\Python3.8.6\lib\site-packages\openpyxl\worksheet\_reader.py", line 465, in bind_all
self.bind_cells()
File "D:\Python3.8.6\lib\site-packages\openpyxl\worksheet\_reader.py", line 368, in bind_cells
for idx, row in self.parser.parse():
File "D:\Python3.8.6\lib\site-packages\openpyxl\worksheet\_reader.py", line 163, in parse
obj = prop[1].from_tree(element)
File "D:\Python3.8.6\lib\site-packages\openpyxl\descriptors\serialisable.py", line 103, in from_tree
return cls(**attrib)
TypeError: __init__() got an unexpected keyword argument 'state'
尝试过的方法
1.尝试删掉data_only=True
2.尝试升级openpyxl
代码片段截图
修复excel文件损坏后问题解决。因为我的excel文件是用腾讯在线文档导出来的,双击打开时会弹出文件损坏,是否修复的提示,所以openpyxl在加载excel文件时才会报错得到意外参数'state',修复excel文件损坏问题后解决。
你这不是就简单的读取一下表格文件吗?为啥写的那么复杂,不能直接用路径让它来读吗?
你写的这个代码看起来没啥问题,但是传参看不到,无法判断错误在哪里。
主要是无法确定 self.calibration 对象及其相关属性是否正确定义和赋值。请确保在代码的其他部分中正确定义和使用了 self.calibration 对象,并且 'case_path' 和 'start_sheet' 属性包含了正确的值。