openpyxl - 活动工作表已分组到选定的工作表

时间:2017-11-15 13:56:23

标签: python excel openpyxl


使用openpyxl,我加载了一个现有的工作簿,并设置了一个新的活动工作表。 然后在Excel中打开工作簿时,我注意到在使用openpyxl进行更改之前,新的活动工作表已与原始工作表分组。

有没有办法取消组合表单或对此行为的任何解释?

wb = openpyxl.load_workbook("test.xlsx")
wb.active = 3
wb.save("test.xlsx")

在这里跑完之后"分组"我在谈论:Grouped Sheets Image

好像我在代码中设置的活动工作表("四")没有完全更改所选工作表,但选择了原始选定工作表旁边的新工作表(& #34;一个&#34)

对该问题的另一个讨论:https://bitbucket.org/openpyxl/openpyxl/issues/878/index-0-worksheet-creation-in-existing

谢谢!

2 个答案:

答案 0 :(得分:1)

我已经通过将名为tabSelected的属性更改为False来解决问题。

您可以通过获取要取消选择的选项卡(在本例中为名为" One"的选项卡)来访问该属性,如下面的代码所示。

wb = openpyxl.load_workbook("test.xlsx")
wb.active = 3
wb["One"].views.sheetView[0].tabSelected = False
wb.save("test.xlsx")

第三行将第一个选项卡设置为未选中,因此选择的唯一选项卡是第四个选项卡。 对于这个奇怪的问题,解决方案更像是一种解决方法,但无论如何它仍然有效。

答案 1 :(得分:0)

我的解决方案基于nir9的解决方案。 我取消选中所有工作表,使其不处于活动状态,然后使该工作表成为活动状态。

wb = openpyxl.load_workbook("test.xlsx")
template_copy = wb.copy_worksheet(template)
new_wk_sheet = wb['Template Copy']
new_wk_sheet.title = last_worksheet
for sheet in wb:
        wb[sheet.title].views.sheetView[0].tabSelected = False
wb.active = new_wk_sheet
wb.save("test.xlsx")