打开 xlsx 文件时 openpyxl 库停止迭代错误



我正在尝试打开一个 1.5mb 的 excel 文件,它有 25 张纸,每张不超过 1000 行。 该文件没有什么特别之处。 它也不是只读的。 我需要对文件执行一些自动化任务,但是当我尝试将其导入我的Jupyther环境时,出现以下错误:

---------------------------------------------------------------------------
StopIteration                             Traceback (most recent call last)
<ipython-input-20-4584f4eff7cc> in <module>()
----> 1 eppm = oxl.load_workbook('DCB EPPM Demand Extract 2.xlsx')
~/anaconda3/envs/python3/lib/python3.6/site- 
packages/openpyxl/reader/excel.py in load_workbook(filename, read_only, 
keep_vba, data_only, guess_types, keep_links)
222 
223     apply_stylesheet(archive, wb) # bind styles to workbook
--> 224     pivot_caches = parser.pivot_caches
225 
226     # get worksheets
~/anaconda3/envs/python3/lib/python3.6/site- 
packages/openpyxl/packaging/workbook.py in pivot_caches(self)
123         d = {}
124         for c in self.caches:
--> 125             cache = get_rel(self.archive, self.rels, id=c.id, 
cls=CacheDefinition)
126             records = get_rel(self.archive, cache.deps, cache.id, 
RecordList)
127             cache.records = records
~/anaconda3/envs/python3/lib/python3.6/site- 
packages/openpyxl/packaging/relationship.py in get_rel(archive, deps, id, 
cls)
151         rel = deps[id]
152     else:
--> 153         rel = next(deps.find(cls.rel_type))
154 
155     path = rel.target
StopIteration: 

我无法共享该文件,因为它包含公司信息,并且我无法创建虚拟数据来重新创建文件,因为 Python 错误似乎没有指示错误发生的位置。 我在SO上寻找过类似的错误,但是当人们使用循环时,通常会发生StopIteration错误。 任何帮助将不胜感激!

问题不在于openpyxl或python环境。 问题在于原始工作簿的保存方式。 虽然它被保存为.xlsx文档,但它不是Excel工作簿,它是一个严格的开放XML电子表格.xlsx 因此,乍一看,假设此文件将毫无问题地打开。 将文件更改为 excel 工作簿后.xlsx加载文件没有问题。

我希望这篇文章能帮助那些犯了和我一样错误的人!

最新更新