缺少参考属性时,Openpyxl无法读取行

时间:2019-06-21 15:29:46

标签: python excel openpyxl

我正在使用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

1 个答案:

答案 0 :(得分:0)

您必须降级为openpyxl 2.5.14版。

其中一位开发人员说(在openpyxl的2.6.x版本中),'r'属性是必需的,即使OOXML规范说它是可选的。有关更多信息,请参见this issue opened on BitBucket