Pandas / xlsxwriter writer.close() 没有完全关闭 excel 文件
Pandas / xlsxwriter writer.close() does not completely close the excel file
我试图在使用 python 脚本创建 excel 文件后对其进行手动修改。不幸的是,如果脚本仍然是 运行,则在尝试以相同名称保存它时会出现共享文件冲突错误消息。
代码中的一切运行顺利。文件已创建、填充并保存。我可以打开它并对其进行处理,但如果脚本仍然是 运行.
,则无法以相同的名称覆盖它
outpath = filedialog.asksaveasfile(
mode="wb",
filetype=[("Excel", ("*.xls", "*.xlsx"))],
defaultextension=".xlsx",
)
writer = pd.ExcelWriter(outpath, engine="xlsxwriter")
df1.to_excel(writer, sheet_name="Results")
writer.save()
writer.close()
我希望 python 完全关闭 excel 文件并让我在脚本仍然存在时覆盖它 运行
你的代码看起来太复杂了,你不需要自己和编写者打交道df.to_excel()
可以为你做。
只需按照 docs.
中的建议使用更简单的代码:df1.to_excel(outpath, sheet_name="Results", engine='xlsxwriter')
我也面临着类似的情况。 alec_djinn 给出的建议不适用于多张纸,因为我正在工作。所以我只是忽略了 .close() 方法,它工作得很好。
我也有这个问题。
尝试在 Excel 中保存更改时出现“共享冲突”。
解决了在 writer.close()
.
之后添加 writer.handles = None
writer = pd.ExcelWriter(workPath+'file.xlsx', engine='xlsxwriter')
# Add all your sheets and formatting here
...
# Save and release handle
writer.close()
writer.handles = None
我也运行加入这个。由于“共享冲突”,我无法将文件保存在 Excel 中,因为 python.exe 仍然有文件的句柄。
如果您只想保存 excel 文件,则仅使用 df.to_excel()
的公认答案是正确的。但是如果你想做更多的事情,比如先给excel文件添加格式,你就得用pd.ExcelWriter()
.
不过,正如 Exho 评论的那样,关键是您使用以下形式:
with pd.ExcelWriter(outpath, engine="xlsxwriter") as writer:
# do stuff here
您不使用 writer.save()
或 writer.close()
,它们无论如何都是同一个调用的同义词。相反,一旦您离开 with
范围,文件就会被保存并关闭并释放句柄。
我试图在使用 python 脚本创建 excel 文件后对其进行手动修改。不幸的是,如果脚本仍然是 运行,则在尝试以相同名称保存它时会出现共享文件冲突错误消息。
代码中的一切运行顺利。文件已创建、填充并保存。我可以打开它并对其进行处理,但如果脚本仍然是 运行.
,则无法以相同的名称覆盖它outpath = filedialog.asksaveasfile(
mode="wb",
filetype=[("Excel", ("*.xls", "*.xlsx"))],
defaultextension=".xlsx",
)
writer = pd.ExcelWriter(outpath, engine="xlsxwriter")
df1.to_excel(writer, sheet_name="Results")
writer.save()
writer.close()
我希望 python 完全关闭 excel 文件并让我在脚本仍然存在时覆盖它 运行
你的代码看起来太复杂了,你不需要自己和编写者打交道df.to_excel()
可以为你做。
只需按照 docs.
df1.to_excel(outpath, sheet_name="Results", engine='xlsxwriter')
我也面临着类似的情况。 alec_djinn 给出的建议不适用于多张纸,因为我正在工作。所以我只是忽略了 .close() 方法,它工作得很好。
我也有这个问题。
尝试在 Excel 中保存更改时出现“共享冲突”。
解决了在 writer.close()
.
writer.handles = None
writer = pd.ExcelWriter(workPath+'file.xlsx', engine='xlsxwriter')
# Add all your sheets and formatting here
...
# Save and release handle
writer.close()
writer.handles = None
我也运行加入这个。由于“共享冲突”,我无法将文件保存在 Excel 中,因为 python.exe 仍然有文件的句柄。
如果您只想保存 excel 文件,则仅使用 df.to_excel()
的公认答案是正确的。但是如果你想做更多的事情,比如先给excel文件添加格式,你就得用pd.ExcelWriter()
.
不过,正如 Exho 评论的那样,关键是您使用以下形式:
with pd.ExcelWriter(outpath, engine="xlsxwriter") as writer:
# do stuff here
您不使用 writer.save()
或 writer.close()
,它们无论如何都是同一个调用的同义词。相反,一旦您离开 with
范围,文件就会被保存并关闭并释放句柄。