首页 > 解决方案 > 加载工作簿时这个openpyxl“ValueError”是什么意思?

问题描述

在 Jupyter Notebook 中,我试图运行以下代码来打开带有数据透视表的现有 XLSX 文件。

from openpyxl import load_workbook
wb=load_workbook('TEMPLATE.xlsx')

这最终会引发一个值错误,与数据透视表有关:

----> 1 wb=load_workbook('TEMPLATE.xlsx') 中的 ValueError Traceback(最近一次调用最后一次)

~\AppData\Roaming\Python\Python38\site-packages\openpyxl\reader\excel.py 在 load_workbook(文件名,只读,keep_vba,data_only,keep_links)315 阅读器 = ExcelReader(文件名,只读,keep_vba,316 data_only,keep_links) --> 317 reader.read() 318 返回 reader.wb

~\AppData\Roaming\Python\Python38\site-packages\openpyxl\reader\excel.py in read(self) 280 self.read_theme() 281 apply_stylesheet(self.archive, self.wb) --> 282 self.read_worksheets () 283 self.parser.assign_names() 284 如果不是 self.read_only:

~\AppData\Roaming\Python\Python38\site-packages\openpyxl\reader\excel.py in read_worksheets(self) 266 src = self.archive.read(pivot_path) 267 tree = fromstring(src) --> 268 pivot = TableDefinition.from_tree(tree) 269 pivot.cache = self.parser.pivot_caches[pivot.cacheId] 270 ws.add_pivot(pivot)

~\AppData\Roaming\Python\Python38\site-packages\openpyxl\descriptors\serialisable.py in from_tree(cls, node) 81 if hasattr(desc, 'from_tree'): 82 #descriptor manages conversion ---> 83 obj = desc.from_tree(el) 84 else: 85 if hasattr(desc.expected_type, "from_tree"):

~\AppData\Roaming\Python\Python38\site-packages\openpyxl\descriptors\sequence.py in from_tree(self, node) 83 84 def from_tree(self, node): ---> 85 return [self.expected_type.from_tree (el) for el in node] 86 87

~\AppData\Roaming\Python\Python38\site-packages\openpyxl\descriptors\sequence.py in (.0) 83 84 def from_tree(self, node): ---> 85 return [self.expected_type.from_tree(el ) 用于节点中的 el] 86 87

~\AppData\Roaming\Python\Python38\site-packages\openpyxl\descriptors\serialisable.py in from_tree(cls, node) 101 attrib[tag] = obj 102 --> 103 return cls(**attrib) 104 105

~\AppData\Roaming\Python\Python38\site-packages\openpyxl\pivot\table.py in init (self, scope, type, priority, pivotAreas, extLst) 479 extLst=None, 480 ): --> 481 self.范围 = 范围 482 self.type = 类型 483 self.priority = 优先级

~\AppData\Roaming\Python\Python38\site-packages\openpyxl\descriptors\base.py in set (self, instance, value) 126 def set (self, instance, value): 127 if value not in self.values: --> 128 raise ValueError( self.doc ) 129 super(Set, self)。设置(实例,值)130

ValueError:值必须是 {'data'、'selection'、'field'} 之一

有没有人遇到过这种情况或找到解决方法?我无法以只读模式打开文件,因为我需要编辑作为数据表源的工作表。但是,以只读模式打开允许我打开文件。

标签: pythonopenpyxl

解决方案


推荐阅读