我有简单的代码将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)。之后只有一个“锯”
这可能是公式中的简单修复,但似乎找不到任何有效的方法。任何帮助将不胜感激
谢谢
答案 0 :(得分:2)
您的问题是您不会再写本书所包含的旧sheets
。假设您需要再次从头开始编写,而无需再次执行to_excel
,而只需指定工作簿即可。
发生这种情况是因为xlsxwriter
创建了一个新文件,因此旧文件被删除。
您可以使用writer.book
和writer.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对象,则工作表将被添加到现有的工作簿中。