Python导出excel文件出错(ValueError: I/O operation on closed file)

Python使用pd.ExcelWriter保存excel文件出现错误,自行尝试了多种方法,最终得以解决,本篇文章会根据博主自己实验过的方法都展示出来,为了自己做个笔记,急需解决方法的可以直接看最后一个。

目录

  • 问题
    • 尝试解决
      • 一、缩进问题
      • 二、with不用close
      • 三、最终解决方法

问题

    with pd.ExcelWriter(output_path, engine='openpyxl') as writer:
        dt.to_excel(writer)
        writer.save()
    writer.close()
    print("导出excel成功!")

运行结果:

此次运行虽然出错了,但是也能导出excel文件,不过excel文件打开会有需要修复的提醒。

尝试解决

在网上收集了很多的解决方法,如下:

一、缩进问题

在网上看到很多说是缩进的问题,我修改了下,结果运行出来的还是一样出错了。

## 原代码
    with pd.ExcelWriter(output_path, engine='openpyxl') as writer:
        dt.to_excel(writer)
        writer.save()
    writer.close()
    print("导出excel成功!")
## 更改后
    with pd.ExcelWriter(output_path, engine='openpyxl') as writer:
        dt.to_excel(writer)
        writer.save()
        writer.close()
        print("导出excel成功!")

运行结果:
在这里插入图片描述

二、with不用close

with pd.ExcelWriter(…) as writer
writer 变量只在该代码块内有效,with使用完后会自动关闭I/O流,不必多写 writer.close()

## 原代码
    with pd.ExcelWriter(output_path, engine='openpyxl') as writer:
        dt.to_excel(writer)
        writer.save()
    writer.close()
    print("导出excel成功!")
## 更改后
    with pd.ExcelWriter(output_path, engine='openpyxl') as writer:
        dt.to_excel(writer)
        writer.save()
        print("导出excel成功!")

运行结果:

使用这个方法,运行是成功了,但是打开excel依然会有需要修复的提醒。

Python导出excel文件出错(ValueError: I/O operation on closed file)_第1张图片

三、最终解决方法

## 原代码
    with pd.ExcelWriter(output_path, engine='openpyxl') as writer:
        dt.to_excel(writer)
        writer.save()
    writer.close()
    print("导出excel成功!")
## 更改后
    write = pd.ExcelWriter(output_path, engine='openpyxl')
    dt.to_excel(write)
    write.close()
    print("导出excel成功!")

运行结果:

最终我是通过换了一种写法成功导出了excel,而且打开excel文件也不会有任何错误的提示。

因为我没有遇到其他问题,如果以上三种都没有解决到问题,那就得自行考虑下是否存在其他问题或者Python依赖包的版本问题吧。

你可能感兴趣的:(Python之Excel相关,python,pycharm,开发语言)