如何用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
相关产品推荐
相关产品推荐

