当前位置:  开发笔记 > 编程语言 > 正文

openpyxl设置活动表

如何解决《openpyxl设置活动表》经验,为你挑选了1个好方法。

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

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

@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'),如何将其“设置”为活动工作表?

文档显示有一个活动的“设定者”,也称为活动的。它需要一个额外的参数,即整数索引值。

怎么wb.active(1)不起作用?我不是用



1> flywire..:

这是通过工作表名称在工作簿中设置活动工作表的另一种方法。有类似的答案(例如,openpyxl按名称获取工作表 涉及打开关闭的文件),其他答案没有足够的详细信息让我理解此功能。

该内存操纵一个工作簿教程是开始的地方,答案在我使用本教程演示了没有活动工作表的名称,它实际上是纸张上的活跃指数。如果添加或删除工作表更改了索引位置的工作表,则其他工作表将变为活动状态。

最初我以为.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)

>>> ws = wb.active
>>> ws.title = "alpha"
>>>
>>> ws = wb.create_sheet('bravo')
>>> print(wb.sheetnames)
[u'alpha', u'bravo']
>>> print(wb.active)

>>>
>>> ws = wb.create_sheet('charlie',0)  # insert at index 0
>>> print(wb.sheetnames)
[u'charlie', u'alpha', u'bravo']
>>> print(wb.active)

>>>
>>>
>>> wb.active = 1
>>> print(wb.active)

>>>
>>> wb.active = 2
>>> print(wb.active)

>>>
>>> wb.active = 0
>>> print(wb.active)

>>>
>>> wb.active = 3
>>> print(wb.active)
None
>>>
>>> ws = wb.create_sheet(index=0)  # insert at index
>>> print(wb.active)

>>> 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)

>>> ws4 = wb["charlie"] # from /sf/ask/17360801/
>>> print(wb.active)

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

>>>

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有