openpyxl,停用选项卡,因此当用户在 Excel 中打开时,只有一个选项卡处于活动状态

问题描述 投票:0回答:1

我正在通过复制上次使用工作簿时处于活动状态的工作表来创建一个新工作表,并使用

workbook.copy_worksheet
来执行此操作。

创建工作表后,我使用 workbook.active 切换到新工作表,并将其设为活动工作表。不幸的是,之前处于活动状态的工作表并未停用,因此现在两个工作表同时处于活动状态。

我尝试了本页显示的其他方法,使用 openpyxl 设置活动工作表,所以请不要指着我那里,这些不是我的问题。

当我手动打开工作簿时,最后一个活动工作表和我创建的工作表都处于活动状态,就像在 Excel 中按住 Ctrl 键选择多个工作表时一样。

如何使用 openpyxl 停用另一个工作表,以便当用户在 Excel 中打开工作簿时,只有一个工作表处于活动状态?

一些测试代码:

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)
    newWorksheet = workbook.copy_worksheet(workbook.active)
    newWorksheetTitle = workbook.active.title[5:] + '-' + str(int(workbook.active.title[5:]) + 54)
    newWorksheet.title = newWorksheetTitle
    workbook.active = newWorksheet
    print(newWorksheet.title)
    workbook.save(filename=workbookString)

create_new_tab_in_workbook()
python excel openpyxl
1个回答
0
投票

在工作表视图上禁用“tabSelected”

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)
    newWorksheet = workbook.copy_worksheet(workbook.active)
    newWorksheetTitle = workbook.active.title[5:] + '-' + str(int(workbook.active.title[5:]) + 54)
    newWorksheet.title = newWorksheetTitle
    
    workbook[workbook.active.title].views.sheetView[0].tabSelected = False

    workbook.active = newWorksheet
    print(newWorksheet.title)
    workbook.save(filename=workbookString)

create_new_tab_in_workbook()
© www.soinside.com 2019 - 2024. All rights reserved.