我第一次尝试在一个非常重的文件上使用openpyxl,这个文件刚好超过20500千,有很多格式和VBA宏
我的代码不断返回以下错误:
File " \Anaconda3\lib\site-packages\openpyxl\styles\alignment.py", line 52, in __init__
self.relativeIndent = relativeIndent
File " \Anaconda3\lib\site-packages\openpyxl\descriptors\base.py", line 107, in __set__
raise ValueError('Min value is {0}'.format(self.min))
ValueError: Min value is 0
有人知道问题是什么/如何访问该文件吗?我试图将数据发布到现有的Excel文件中,以简化流程并替换繁重的VBA代码。所以我不能仅仅将它发布到一个不同的xlsx文件中,然后使用VBA代码调用它(这将无法达到目的)
非常感谢
这是我的密码:
wb = load_workbook(filename='C:/dev/CodeRep/ProjectName/MainFile 2021_01.xlsm', read_only = False, keep_vba = True)
回溯表明工作簿样式表中的对齐定义存在问题。openpyxl非常严格地遵循OOXML规范,以尽量减少以后不愉快的意外,这就是为什么它倾向于引发异常或发出警告,而不是让事情过去
有关更多详细信息,我们需要查看样式表的XML源,或者至少是对齐部分。您可以通过解压缩XLSM文件并查找styles.xml文件来找到它。这将为您提供更多信息,并允许您向openpyxl提交错误报告
我遇到了同样的错误,无法找出确切的原因,但我注意到,当我在不同的环境中运行python脚本时,它工作正常
我意识到这可能与我使用的openpyxl和xlrd包的版本有关,所以我将它们降级为
openpyxl==3.0.4
和xlrd==1.2.0
(以前使用openpyxl==3.0.7
和xlrd==2.0.1
),这解决了我的问题预处理文件
我通过预处理excel文件解决了这个问题
发现mi问题出现在“*/myfile.xlsx/xl/styles.xml”,其中多个
xf
标记具有属性indent="-1"
,openpyxl仅支持非负值,当发现负值时引发该异常在花了一段时间试图覆盖整个openpyxl层次结构以捕获异常之后,我决定处理XLSX
这是我的密码:
免责声明:
我必须说,这不是一个非常优雅的解决方案,因为整个文件都经过处理,并且使用了一个辅助文件。 此外,我不是excel专家,我不知道wheter将这些标记的
indent="-1"
更改为indent="0"
可能会导致文件中的格式问题。这是我的工作解决方案,不能真正说出这些标签的效果相关问题 更多 >
编程相关推荐