You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用openpyxl取消多余工作表激活,使Excel仅显示一个活动标签

解决openpyxl设置活动工作表后多表同时激活的问题

问题出在copy_worksheet复制工作表时,原工作表的选中状态(selected属性)会保留,而workbook.active仅设置默认打开的活动表,不会自动取消其他表的选中状态,导致打开文件时多表同时被选中。

解决方法很直接:在将新工作表设为活动表后,遍历所有工作表,把除新表外的其他表的selected属性设为False即可。

修改后的代码如下:

def create_new_tab_in_workbook():
    """Create a new tab in TestWorkbook.xlsx"""
    from openpyxl import load_workbook

    workbookString = r'C:\TemporaryRemoveToday\WORKING\TestWorkbook.xlsx'
    workbook = load_workbook(filename=workbookString)
    original_active_sheet = workbook.active
    newWorksheet = workbook.copy_worksheet(original_active_sheet)
    newWorksheetTitle = original_active_sheet.title[5:] + '-' + str(int(original_active_sheet.title[5:]) + 54)
    newWorksheet.title = newWorksheetTitle
    
    # 设置新表为活动表
    workbook.active = newWorksheet
    # 取消其他所有表的选中状态
    for sheet in workbook.worksheets:
        if sheet is not newWorksheet:
            sheet.selected = False
    
    print(newWorksheet.title)
    workbook.save(filename=workbookString)

create_new_tab_in_workbook()

关键改动是新增的遍历逻辑:通过sheet.selected = False手动取消非目标工作表的选中状态,这样打开工作簿时就只会显示新设置的活动工作表。

内容的提问来源于stack exchange,提问作者JRS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 13:50:00