gpt4 book ai didi

python - 使用 openpyxl 加载工作表并忽略包含数据透视表的其他工作表

转载 作者:行者123 更新时间:2023-12-04 19:50:30 26 4
gpt4 key购买 nike

我有一个 .xlsx 文件,其中包含 2 个工作表。第一个包含常规数据(没什么花哨的),而第二个包含数据透视表。我只需要第一个工作表中的数据,我想忽略第二个,但是数据透视表会引发错误:TypeError: expected <type 'basestring'>openpyxl.load_workbook叫做。

错误出现在:openpyxl/reader/excel.py , 符合: pivot_caches = parser.pivot_caches .

我试过 openpyxl版本 2.6.42.5.1 .我正在使用 Python 2.7。

删除第二张工作表后,错误消失了,并且正确读取了第一张工作表中的数据。但是,这些文件是由用户上传的,虽然我不需要数据透视表,但如果可能的话,我想避免强制用户删除不必要的工作表。

示例代码:

from io import BytesIO

import openpyxl

pivot = '~/Downloads/file_with_pivot_tables.xlsx'

with open(pivot) as fin:
content = BytesIO(fin.read())
wb = openpyxl.load_workbook(content) # this line fails
ws = wb.get_sheet_by_name('Sheet1')


整个错误跟踪:
  File "/Users/gi/lib/openpyxl/reader/excel.py", line 224, in load_workbook
pivot_caches = parser.pivot_caches
File "/Users/gi/lib/openpyxl/packaging/workbook.py", line 125, in pivot_caches
cache = get_rel(self.archive, self.rels, id=c.id, cls=CacheDefinition)
File "/Users/gi/lib/openpyxl/packaging/relationship.py", line 162, in get_rel
obj.deps = get_dependents(archive, rels_path)
File "/Users/gi/lib/openpyxl/packaging/relationship.py", line 130, in get_dependents
rels = RelationshipList.from_tree(node)
File "/Users/gi/lib/openpyxl/descriptors/serialisable.py", line 84, in from_tree
obj = desc.expected_type.from_tree(el)
File "/Users/gi/lib/openpyxl/descriptors/serialisable.py", line 100, in from_tree
return cls(**attrib)
File "/Users/gi/lib/openpyxl/packaging/relationship.py", line 50, in __init__
self.Target = Target
File "/Users/gi/lib/openpyxl/descriptors/base.py", line 44, in __set__
raise TypeError('expected ' + str(self.expected_type))
TypeError: expected <type 'basestring'>

最佳答案

您可以指定要操作的工作表:

wb = openpyxl.load_workbook('H:\\myfile.xlsx')
ws = wb['sheet1']
ws['E1'] = 'The sky is gray.'
wb.save('H:\\myfile.xlsx')
wb.close()

如果您需要先检查它们,您还可以获得所有工作表名称的列表:
print(wb.sheetnames)

关于python - 使用 openpyxl 加载工作表并忽略包含数据透视表的其他工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60490184/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com