python - 无法使用 openpyxl 写入输出 excel 文件
问题描述
我一直在使用 openpyxl 编写一个脚本,直到昨天我不小心关闭了我的 GUI 中途进程时它一直正常工作。从那时起,我的脚本就无法保存到任何目录中的新 excel 文件中。我使用 PyCharm 作为我的 IDE。每当我运行脚本时,我都会收到以下错误:
WindowsError:[错误 32] 进程无法访问该文件,因为它正被另一个进程使用:'c:\users\ username \appdata\local\temp\openpyxl.izzaxe'
这工作正常,所以我不认为这是我的代码的问题,但我在下面包含了一个片段:
wb = load_workbook(filename=r'PATH TO SOME EXCEL FILE')
header = wb['Sheet1'][1:1]
listheader = []
for h in listheader:
listheader.append(h.value)
wb['Sheet2'].append(listheader)
wb.save(filename=r'PATH TO A DIFFERENT EXCEL FILE'
我已关闭 PyCharm 并重新打开,但仍收到错误消息。我还导航到 **c:\users\username\appdata\local\temp** 并删除了导致阻塞的文件,但是当我重新运行我的脚本时,会生成一个具有不同扩展名的新 openpyxl 文件目录并阻止我的脚本保存新文件。我目前在我的 **appdata\local\temp** 目录中有 5 个不同的带有随机扩展名的 openpyxl 临时文件
我还重新启动了计算机,并使用 pip 卸载并重新安装了 openpyxl,但均未成功。我也尝试通过 CMD 和 IDLE 运行脚本,但我收到相同的错误消息。
我正在使用 Python 2.7,这是必需的,因为它是 ArcGIS 附带的默认 Python 安装,并且我需要访问没有 Python 3 等效项的 arcpy 模块的元数据功能。任何帮助是极大的赞赏。
解决方案
事实证明,这实际上是由我的一部分代码引起的。我正在为我的输出定义列尺寸,如下所示:
wb['Sheet1'].column_dimensions['A'] = 100
wb['Sheet1'].column_dimensions['C'] = 50
wb['Sheet1'].column_dimensions['D'] = 50
wb['Sheet1'].column_dimensions['E'] = 150
wb['Sheet1'].column_dimensions['F'] = 150
不包括宽度属性是导致脚本失败的原因。将以上内容修改为以下内容解决了我的问题:
wb['Sheet1'].column_dimensions['A'].width = 100
wb['Sheet1'].column_dimensions['C'].width = 50
wb['Sheet1'].column_dimensions['D'].width = 50
wb['Sheet1'].column_dimensions['E'].width = 150
wb['Sheet1'].column_dimensions['F'].width = 150
这可能是我找到答案的以下线程的副本: Stuck on AttributeError: 'int' object has no attribute 'reindex' when trying to save workbook in openpyxl
推荐阅读
- python-3.x - 面临使用 python3 抓取孟加拉语文本的问题
- c++ - 在 C++ 中执行非阻塞线程
- mysql - MySQL:如何在同一行显示前一天数据和第二天数据
- gradle - JHipster 的 Gitlab CI 失败
- asp.net-core - 为什么回滚后我在 SaveChanges 上收到 DbUpdateConcurrencyException
- c# - 如何在 C# 中标准化花哨的 unicode 字符串?
- java - 从 JPanel 获取课程
- email - 尝试连接到 Gmail 的 SMTP
- javascript - Jquery:第一次点击后停止
- node.js - 试图在 Discord bot 中进行决斗功能,但 while 循环导致致命错误