gpt4 book ai didi

python - openpyxl:remove_sheet 导致 IndexError:保存工作表时列出索引超出范围错误

转载 作者:太空宇宙 更新时间:2023-11-03 15:51:51 24 4
gpt4 key购买 nike

我正在尝试使用 openpyxl 来:

  1. 打开一个包含 3 个工作表(Sheet1、Sheet2、Sheet3)的 Excel (2016) 工作簿
  2. 删除工作表 (Sheet2)
  3. 将工作簿保存到不包含 Sheet2 的其他工作簿中

    from openpyxl import load_workbook
    wb = load_workbook("c:/Users/me/book1.xlsx")
    ws = wb.get_sheet_by_name('Sheet2')
    wb.remove_sheet(ws)
    wb.save("c:/Users/me/book2.xlsx")

wb.save 将生成 IndexError: list index out of range 错误,并生成 Excel 无法打开的损坏的 book2.xlsx 文件。

最佳答案

我遇到了类似的问题,只有 xlwt 库。无论如何,原因是相同的,您删除了设置为事件工作表的工作表。因此,要解决此问题,请在保存工作簿之前将其他工作表设置为事件状态。在 openpyxl 中,它会是这样的:

from openpyxl import load_workbook
wb = load_workbook("c:/Users/me/book1.xlsx")
ws = wb.get_sheet_by_name('Sheet2')
wb.remove_sheet(ws)
wb._active_sheet_index = 0
wb.save("c:/Users/me/book2.xlsx")

我必须指出,这不是很好的编程实践,但没有方法设置事件工作表,只能获取一个。

编辑:刚刚发现这个存储库已移至bitbucket,并发现它具有设置事件工作表的方法。只需使用:

wb.active = 0

关于python - openpyxl:remove_sheet 导致 IndexError:保存工作表时列出索引超出范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41203407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com