熊猫写入excel工作表删除文件中的其他工作表

时间:2018-10-18 15:47:33

标签: excel python-3.x pandas pandas-groupby

我有简单的代码将python数据框导出到带有工作表的现有excel文件 但是作者不断从文件中删除现有工作表

read = pd.ExcelFile('Saw_Load.xlsx')
print(read.sheet_names)
writer = pd.ExcelWriter('Saw_Load.xlsx')
result.to_excel(writer,'saw', index = False)
read2 = pd.ExcelFile('Saw_Load.xlsx')
print(read2.sheet_names)
writer.save()

这是我得到的输出

['saw', 'Pivot']
['saw']

我们可以清楚地看到在使用to_excel函数之前,有2张纸(saw,Pivot)。之后只有一个“锯”

这可能是公式中的简单修复,但似乎找不到任何有效的方法。任何帮助将不胜感激

谢谢

3 个答案:

答案 0 :(得分:2)

您的问题是您不会再写本书所包含的旧sheets 。假设您需要再次从头开始编写,而无需再次执行to_excel,而只需指定工作簿即可。

发生这种情况是因为xlsxwriter创建了一个新文件,因此旧文件被删除

您可以使用writer.bookwriter.sheets对象来实现。

excelBook = load_workbook(filename)
with pd.ExcelWriter(filename, engine='xlsxwriter') as writer:
    # Save your file workbook as base
    writer.book = excelBook
    writer.sheets = dict((ws.title, ws) for ws in excelBook.worksheets)

    # Now here add your new sheets
    result.to_excel(writer,'saw', index = False)

    # Save the file
    writer.save()

请注意:请注意,我使用了load_workbook中的openpyxl,但是您可以不使用Excelfile,而只需稍作更改即可复制它。

答案 1 :(得分:1)

尝试一下:

with pd.ExcelWriter('Saw_load.xlsx', engine="openpyxl", mode="a") as writer:
    result.to_excel(writer, sheet_name="name_of_sheet")

希望这会有所帮助!

答案 2 :(得分:0)

尝试一下(尽管我不确定result的来源):

read = pd.ExcelFile('Saw_Load.xlsx')
print(read.sheet_names)
_writer = pd.ExcelWriter('Saw_Load.xlsx')
result.to_excel(_writer,'saw', index = False)

想法from here

  

如果传递现有的ExcelWriter对象,则工作表将被添加到现有的工作簿中。