在Python中向现有工作簿添加新工作表

27

我已经浏览了几乎所有先前的线程,但仍然无法使其工作。我正在尝试向现有工作簿添加一个新工作表。我的代码可以工作,但它会不断地添加更多(实际上有很多)工作表。我想不出解决方案。下面是我的代码:

from openpyxl import load_workbook
wb2 = load_workbook('template.xlsx')
from xlutils.copy import copy as xl_copy
wb = xl_copy(wb2)
wb.create_sheet('sid1')
wb.save('template.xlsx')

1
我很惊讶你没有遇到不同类型的错误。xlutils并不是为了与openpyxl一起使用而设计的。特别是,行wb = xl_copy(wb2)似乎注定会失败。即使它在某种程度上没有产生任何错误,它也是完全不必要的,因为openpyxl不需要(实际上也不能使用)xlutils.copy提供的内容。 - John Y
1个回答

52
如果您想向现有电子表格中添加一个工作表,只需将新工作表添加到该文件中,而不是复制您的 load 对象并尝试将新工作表添加到其中。
from openpyxl import load_workbook
wb2 = load_workbook('template.xlsx')
wb2.create_sheet('sid1')
wb2.save('template.xlsx')

1
@fsociety,我在本地尝试了一下,它完全正常。你确定这是你运行的全部代码而不仅仅是更大代码的片段吗?我认为可能有一个循环出现了。 - Daniel
抱歉,你是对的...我刚刚意识到我一直在制造混乱 :) - fsociety
@fsociety 好的,很高兴能帮到你。 - Daniel
这个很好用,它还将新工作表设置为当前活动工作表。 - Alvaro Rodriguez Scelza
1
在结尾添加.... wb2..close() - Entree

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接