首页 > 解决方案 > 读取损坏的电子表格时出现异常

问题描述

而是一个可能修复的错误报告。我使用的是 3.0.9 版。

我需要处理的文件之一有一个图像有问题。当我用 libreoffice 打开它时,我看到的是占位符而不是图像。但是当我用 load_workbook() 打开它时,会发生异常:

Traceback (most recent call last):
  File "/home/pooh/work/isaac_choi/./1.py", line 5, in <module>
    wb=load_workbook('pritelli/FW21 WOMAN 27.09.21.xlsx')
  File "/home/pooh/venv39/lib/python3.9/site-packages/openpyxl/reader/excel.py", line 317, in load_workbook
    reader.read()
  File "/home/pooh/venv39/lib/python3.9/site-packages/openpyxl/reader/excel.py", line 282, in read
    self.read_worksheets()
  File "/home/pooh/venv39/lib/python3.9/site-packages/openpyxl/reader/excel.py", line 257, in read_worksheets
    charts, images = find_images(self.archive, rel.target)
  File "/home/pooh/venv39/lib/python3.9/site-packages/openpyxl/reader/drawings.py", line 52, in find_images
    image = Image(BytesIO(archive.read(dep.target)))
  File "/usr/lib/python3.9/zipfile.py", line 1463, in read
    with self.open(name, "r", pwd) as fp:
  File "/usr/lib/python3.9/zipfile.py", line 1502, in open
    zinfo = self.getinfo(name)
  File "/usr/lib/python3.9/zipfile.py", line 1429, in getinfo
    raise KeyError(
KeyError: "There is no item named 'xl/drawings/NULL' in the archive"

标签: pythonopenpyxl

解决方案


我认为 KeyError 可以在 OSError (第 53 行)之后立即处理,并且在这种情况下继续迭代:

    except KeyError:
        warn('Missing image')
        continue

推荐阅读