【问题标题】:openpyxl - Active sheet is grouped to selected sheetopenpyxl - 活动工作表被分组到选定的工作表
【发布时间】:2017-11-15 13:56:23
【问题描述】:


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

有没有办法取消对工作表的分组或对此行为的任何解释?

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

在这里运行之后是我正在谈论的“分组”表:Grouped Sheets Image

就好像我在代码中设置的活动工作表(“四”)没有完全更改所选工作表,而是在最初选择的工作表(“一”)旁边选择新工作表

问题再讨论:https://bitbucket.org/openpyxl/openpyxl/issues/878/index-0-worksheet-creation-in-existing

谢谢!

【问题讨论】:

  • 请发布您的代码。
  • “分组”是什么意思?为了让其他人帮助您,您应该提供您正在尝试做的事情的代码。
  • Bitbucket 上的讨论解释了如何做到这一点……
  • @CharlieClark 该讨论中给出的解决方案在我尝试时不起作用(它说 wb.views[0] 尽管 Workbook 对象甚至没有该属性)检查我写的解决方案

标签: python excel openpyxl


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    我的解决方案是基于 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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      相关资源
      最近更新 更多