我正在使用openpyxl读取Excel工作表。由于openxml行元素没有引用属性('r'),因此在迭代和解析行时会引发KeyError。它只有一个样式索引('s')和'customFormat'。
Openxml spreadsheet attributes
如何读取此文件中的单元格?
无论工作簿是否以只读方式打开,以及以不同方式引用单元格(因为它们都调用openpyxl.worksheet._reader.parse_row()
我无法共享excel工作簿,但是python代码非常简单。
wb = load_workbook(filename)
ws = wb['Sheet1']
print(ws['A1'])
错误:
File "openpyxl\worksheet\_reader.py", line 150, in parse
row = self.parse_row(element)
File "openpyxl\worksheet\_reader.py", line 272, in parse_row
self.row_dimensions[attrs['r']] = attrs
KeyError: 'r'
通过调试器:
row = {Element} <Element '{http://schemas.openxmlformats.org/spreadsheetml/2006/main}row' at 0x000002713782E9F8>
attrib = {dict} <class 'dict'>: {'s': '148', 'customFormat': '1'}
tag = {str} '{http://schemas.openxmlformats.org/spreadsheetml/2006/main}row'
tail = {NoneType} None
text = {NoneType} None
答案 0 :(得分:0)
您必须降级为openpyxl
2.5.14版。
其中一位开发人员说(在openpyxl
的2.6.x版本中),'r'
属性是必需的,即使OOXML规范说它是可选的。有关更多信息,请参见this issue opened on BitBucket。