为何调用pd.ExcelWriter的该方式会生成无效格式/扩展名的Excel文件?
问题原因解析
核心原因很简单:第一段代码没有完成ExcelWriter的保存/关闭操作,导致数据根本没写入磁盘。
1. Pandas ExcelWriter的工作逻辑
pd.ExcelWriter本质是一个内存缓存型的写入对象——你调用to_excel时,数据只是被暂存到内存里,并没有直接写入硬盘文件。必须显式触发保存/关闭操作,才会把缓存的所有工作表数据一次性写入磁盘。
2. 第一段代码的问题
你创建了V_writer对象,也调用了两次to_excel,但最后没有执行V_writer.save()或者V_writer.close()。这就相当于你打开了一个文件准备写内容,但写完后没点“保存”就直接关掉了程序——内存里的内容全丢了,磁盘上只留下一个空的文件壳(0KB),Excel自然无法识别这种无效文件。
3. 第二段代码为什么正常
with语句是Python的上下文管理器,当with代码块执行完毕时,Python会自动调用ExcelWriter的__exit__()方法,这个方法内部会自动帮你完成save()和close()操作:把内存中缓存的所有工作表数据写入磁盘,再释放相关资源。所以生成的文件是完整有效的。
修复第一段代码的方法
如果不想用with语句,只需在代码末尾手动添加保存/关闭操作即可:
V_writer = pd.ExcelWriter("myfile.xlsx", mode = 'w') V_df_1.to_excel(V_writer, sheet_name = "df_1", index = False) V_df_2.to_excel(V_writer, sheet_name = "df_2", index = False) V_writer.save() # 或者调用 V_writer.close(),二者效果一致
内容的提问来源于stack exchange,提问作者SRJCoding
相关产品推荐
相关产品推荐

