打开xlsx文件时,openpyxl库StopIteration错误

时间:2019-09-18 08:54:31

标签: python excel python-3.x vba 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错误通常在人们使用循环时发生。 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

问题与openpyxl或python环境无关。问题在于保存原始工作簿的方式。尽管将其另存为.xlsx文档,但它不是excel工作簿,但它是严格的Open XML Spreadsheet .xlsx 因此,乍一看,假定该文件可以正常打开。 将文件更改为excel Workbook .xlsx之后,文件加载就没有问题。

我希望这篇文章能对犯过我同样错误的人有所帮助!