gpt4 book ai didi

python-2.7 - openpyxl 设置事件表

转载 作者:行者123 更新时间:2023-12-01 15:32:39 24 4
gpt4 key购买 nike

http://openpyxl.readthedocs.io/en/default/_modules/openpyxl/workbook/workbook.html?highlight=set%20active%20sheet

文档显示 Workbook 对象具有 active属性(property)

@property
def active(self):
"""Get the currently active sheet"""
return self._sheets[self._active_sheet_index]

@active.setter
def active(self, value):
"""Set the active sheet"""
self._active_sheet_index = value

wb = openpyxl.Workbook()调用 wb.active给出默认的第一个工作表的标题是 Sheet .
假设我创建了另一个工作表 ws1 = wb.create_sheet('another sheet') , 如何我 “设置”这是事件表吗?

文档显示有一个事件的“setter”,也称为事件的。它需要一个额外的参数,一个整数索引值。

怎么来的 wb.active(1)不起作用?我不是在调用函数吗

最佳答案

这是按工作表名称在工作簿中设置事件工作表的不同方法。有类似的答案( openpyxl get sheet by name 例如涉及打开一个关闭的文件),其他人没有足够的细节让我理解这个功能。

Manipulating a workbook in memory教程是开始的地方,在答案下我使用本教程来演示没有事件工作表名称,它实际上是事件索引处的工作表。如果添加或删除工作表更改了索引位置的工作表,则不同的工作表将变为事件状态。

最初我以为.create_sheet使工作表处于事件状态,但后来我意识到我只在事件工作表索引处创建了工作表,该索引恰好为 0。该索引可以设置为大于工作表数量的值,并且文档还包含一条注释,“如果设置为事件的工作表是隐藏的,返回下一个可见的工作表或无”。

详细简答

for s in range(len(wb.sheetnames)):
if wb.sheetnames[s] == 'charlie':
break
wb.active = s

随意改进这个答案。

演示
(base) C:\Users\User>python
Python 2.7.14 |Anaconda, Inc.| (default, Nov 8 2017, 13:40:45) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> # http://openpyxl.readthedocs.io/en/2.5/tutorial.html#create-a-workbook
...
>>> from openpyxl import Workbook
>>> wb = Workbook()
>>> print(wb.sheetnames)
[u'Sheet']
>>>
>>> print(wb.active)
<Worksheet "Sheet">
>>> ws = wb.active
>>> ws.title = "alpha"
>>>
>>> ws = wb.create_sheet('bravo')
>>> print(wb.sheetnames)
[u'alpha', u'bravo']
>>> print(wb.active)
<Worksheet "alpha">
>>>
>>> ws = wb.create_sheet('charlie',0) # insert at index 0
>>> print(wb.sheetnames)
[u'charlie', u'alpha', u'bravo']
>>> print(wb.active)
<Worksheet "charlie">
>>>
>>>
>>> wb.active = 1
>>> print(wb.active)
<Worksheet "alpha">
>>>
>>> wb.active = 2
>>> print(wb.active)
<Worksheet "bravo">
>>>
>>> wb.active = 0
>>> print(wb.active)
<Worksheet "charlie">
>>>
>>> wb.active = 3
>>> print(wb.active)
None
>>>
>>> ws = wb.create_sheet(index=0) # insert at index
>>> print(wb.active)
<Worksheet "bravo">
>>> print(wb.sheetnames)
[u'Sheet', u'charlie', u'alpha', u'bravo']
>>>
>>>
>>> ws_active = wb.get_sheet_by_name('charlie')
__main__:1: DeprecationWarning: Call to deprecated function get_sheet_by_name (Use wb[sheetname]).
>>> ws_active = wb['charlie']
>>> print(wb.active)
<Worksheet "bravo">
>>> ws4 = wb["charlie"] # from https://stackoverflow.com/a/36814135/4539999
>>> print(wb.active)
<Worksheet "bravo">
>>>
>>>
>>> for s in range(len(wb.sheetnames)):
... if wb.sheetnames[s] == 'charlie':
... break
...
>>>
>>> wb.active = s
>>>
>>>
>>> print(wb.active)
<Worksheet "charlie">
>>>

关于python-2.7 - openpyxl 设置事件表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41556378/

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