ExcelWriter save方法无法立即写入磁盘,Jupyter中需关闭软件才可访问文件
解决方案
问题根源
Windows系统下Jupyter内核会持有xlsxwriter创建的文件句柄,即使执行了writer.save(),文件仍处于锁定状态,必须关闭Jupyter才能释放。
解决办法
使用上下文管理器(推荐)
用with语句创建ExcelWriter,它会自动完成资源清理和文件句柄释放,无需手动调用save()或close():import pandas as pd import xlsxwriter data = {'Values': [397, 358, 412]} df = pd.DataFrame(data) # 用with语句管理writer对象 with pd.ExcelWriter('output.xlsx', engine='xlsxwriter') as writer: df.to_excel(writer, sheet_name='Sheet1', index=False) workbook = writer.book worksheet = writer.sheets['Sheet1'] # 定义格式和条件格式 green_format = workbook.add_format({'bg_color': '#00B050'}) yellow_format = workbook.add_format({'bg_color': '#FFFF00'}) orange_format = workbook.add_format({'bg_color': '#FFC000'}) red_format = workbook.add_format({'bg_color': '#FF0000'}) worksheet.conditional_format('A2:A4', {'type': 'cell','criteria': '>=','value': 391,'format': green_format}) worksheet.conditional_format('A2:A4', {'type': 'cell','criteria': 'between','minimum': 354,'maximum': 390,'format': yellow_format}) worksheet.conditional_format('A2:A4', {'type': 'cell','criteria': 'between', 'minimum': 293,'maximum': 353,'format': orange_format}) worksheet.conditional_format('A2:A4', {'type': 'cell','criteria': '<=','value': 292,'format': red_format}) # 无需手动save(),with块结束会自动保存并关闭手动关闭writer对象
在writer.save()后添加writer.close(),强制释放文件句柄:# ... 原有代码 ... writer.save() writer.close() # 新增这行确认文件保存路径
有时候文件没出现在桌面,是因为Jupyter的工作目录不是桌面。可以先查看当前工作目录:import os print(os.getcwd())或者直接指定桌面的绝对路径保存,比如:
# Windows桌面路径示例,替换成你的用户名 path = 'C:/Users/你的用户名/Desktop/output.xlsx' writer = pd.ExcelWriter(path, engine='xlsxwriter')
内容的提问来源于stack exchange,提问作者Starbucks
相关产品推荐
相关产品推荐

