因此,我在Windows XP笔记本电脑上安装了Python 3.4.1。我得到了openpyxl软件包(现在不记得是哪个版本,我认为2.1),并且我很好地编写了自定义代码,以根据需要在我的工作场所修改Excel文档。python openpyxl load_workbook错误:TypeError(NoneType not Iterable)和ValueError(Max。Value is 180)
然后我格式化我的笔记本电脑(出于工作原因)并安装Windows 7.我再次获得了Python 3.4.1。我pip安装了openpyxl(在我的命令提示符下是“pip install openpyxl”) - 这次肯定是版本2.1。然后我尝试打开我以前的一些工作簿。
这是在空闲的GUI界面 - 不是在脚本或任何东西。我刚才输入(后正确导入openpyxl-> load_workbook):
WB = load_workbook( 'Filename.xlsx')
现在我得到的错误。此文件是由Excel 2007(在Windows XP中创建的,在格式化我的笔记本电脑并安装Windows 7之前创建的)创建的,我以前可以在早期的Windows XP配置中使用我的openpyxl软件包打开它。我还尝试在MS Excel(Windows 7)中重新打开Excel文件并重新放置,然后尝试用openpyxl打开。我以前的Windows XP和我的新Windows 7都是32位(任何地方都没有64位)。
我得到的错误(取决于我尝试打开该文件)是:
错误文件编号1:
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
wb=load_workbook('Filename.xlsx')
File "C:\Python34\lib\site-packages\openpyxl\reader\excel.py", line 151, in load_workbook
_load_workbook(wb, archive, filename, read_only, keep_vba)
File "C:\Python34\lib\site-packages\openpyxl\reader\excel.py", line 244, in _load_workbook
wb._external_links = list(detect_external_links(rels, archive))
File "C:\Python34\lib\site-packages\openpyxl\workbook\names\external.py", line 100, in detect_external_links
Book.links = list(parse_ranges(range_xml))
File "C:\Python34\lib\site-packages\openpyxl\workbook\names\external.py", line 85, in parse_ranges
for n in safe_iterator(names, '{%s}definedName' % SHEET_MAIN_NS):
TypeError: 'NoneType' object is not iterable
ERROR文件第2号:
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
wb=load_workbook('Filename.xlsx')
File "C:\Python34\lib\site-packages\openpyxl\reader\excel.py", line 151, in load_workbook
_load_workbook(wb, archive, filename, read_only, keep_vba)
File "C:\Python34\lib\site-packages\openpyxl\reader\excel.py", line 205, in _load_workbook
style_table, color_index, cond_styles = read_style_table(archive.read(ARC_STYLE))
File "C:\Python34\lib\site-packages\openpyxl\reader\style.py", line 215, in read_style_table
p.parse()
File "C:\Python34\lib\site-packages\openpyxl\reader\style.py", line 44, in parse
self.parse_cell_xfs()
File "C:\Python34\lib\site-packages\openpyxl\reader\style.py", line 191, in parse_cell_xfs
_style['alignment'] = Alignment(**alignment)
File "C:\Python34\lib\site-packages\openpyxl\styles\alignment.py", line 54, in __init__
self.textRotation = textRotation
File "C:\Python34\lib\site-packages\openpyxl\styles\hashable.py", line 54, in __setattr__
return object.__setattr__(self, *args, **kwargs)
File "C:\Python34\lib\site-packages\openpyxl\descriptors\__init__.py", line 89, in __set__
super(Min, self).__set__(instance, value)
File "C:\Python34\lib\site-packages\openpyxl\descriptors\__init__.py", line 68, in __set__
raise ValueError('Max value is <0>'.format(self.max))
ValueError: Max value is 180
对于第二种情况,我去了__init__.py文件并添加一行来打印生成的值。原来是255,这是> 180(因此错误)。我不知道这个值代表了什么 - 文档中的独特风格的数量或什么?
openpyxl有没有依赖关系?我已经正确安装了Excel(现在在Windows 7中),带有Service Pack 1.我也尝试卸载Python 3.4.1和openpyxl并重新安装,三次或四次。
这里有什么问题?
在此先感谢您的任何答案。
好吧,看起来像textRotation的min/max是好的,但Excel正在重复使用该字段的不同风格。如果你创建了一本书,选择一个单元格,格式化单元格,进入对齐方式,在方向中单击垂直的“文本”(将它变成白色)然后保存,结果文件不能在openpyxl中打开,给出同样的错误锯。 – user3757614 2014-09-22 22:47:50
创建了一个错误报告。 – user3757614 2014-09-22 23:01:01
这可能是方向。我会给你一个镜头。同时,我查看了我的同事安装了哪个版本的openpyxl。原来是2.0.5版。所以我回到了那个版本(而不是2.1.0),现在我没有打开相同工作簿的问题。版本2.1.0出错了?要检查它是否对齐,我需要重新安装2.1.0版并重试。我会这样做并报告回来。 – Pythoness 2014-09-23 16:19:21