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)
不起作用?我不是用
这是通过工作表名称在工作簿中设置活动工作表的另一种方法。有类似的答案(例如,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) >>>