问题描述
如果要写入的数据框为空或行数少于原始数据,如何清除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)
不过请检查链接。