如果数据框为空,则删除/清除工作表

问题描述

如果要写入的数据框为空或行数少于原始数据,如何清除Excel工作表?

基本上,

在Excel中显示

Header1   Header2   Header3
aaa       bbb       ccc
ddd       eee       fff

DataFrame:

Header1   Header2   Header3
111       222       333

excel工作表上的预期输出

Header1   Header2   Header3
111       222       333

我得到了什么:

Header1   Header2   Header3
111       222       333
ddd       eee       fff

我使用的代码

book = load_workbook(filepath)
writer=pd.ExcelWriter(filepath,engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title,ws) for ws in book.worksheets)
Df.to_excel(writer,"Outstanding",index = False,header=True)

是否有办法清除工作表或覆盖整个工作表,而不是仅清除上面有数据的单元格?数据框是动态的,可以为空,这意味着工作表应为空。excel上还有其他工作表,代码的其他部分也必须访问该工作表。

解决方法

您可以看到how to overwrite excel sheets here。据我所知,您可能只需要添加writer.save(),或使用默认的writer = pd.ExcelWriter('g.xlsx')而不是您正在使用的那个。

如果其他所有方法均失败,则可以在写入工作表之前将其删除:

std=book.get_sheet_by_name(<sheet_name>)
book.remove_sheet(std)

不过请检查链接。