使用openpyxl在VS Code中无法打开.xlsx文件,出现FileNotFoundError错误
使用openpyxl在VS Code中无法打开.xlsx文件,出现FileNotFoundError错误
首先,先还原你遇到的错误日志:
PS C:\Users\Asit\Desktop\python> python -u "c:\Users\Asit\Desktop\python\excel_project\excel.py" Traceback (most recent call last): File "c:\Users\Asit\Desktop\python\excel_project\excel.py", line 3, in <module> wb = xl.load_workbook('transactions.xlsx') File "C:\Users\Asit\AppData\Local\Programs\Python\Python313\Lib\site-packages\openpyxl\reader\excel.py", line 346, in load_workbook reader = ExcelReader(filename, read_only, keep_vba, data_only, keep_links, rich_text) File "C:\Users\Asit\AppData\Local\Programs\Python\Python313\Lib\site-packages\openpyxl\reader\excel.py", line 123, in __init__ self.archive = _validate_archive(fn) ~~~~~~~~~~~~~~~~~^^^^ File "C:\Users\Asit\AppData\Local\Programs\Python\Python313\Lib\site-packages\openpyxl\reader\excel.py", line 95, in _validate_archive archive = ZipFile(filename, 'r') File "C:\Users\Asit\AppData\Local\Programs\Python\Python313\Lib\zipfile\__init__.py", line 1362, in __init__ self.fp = io.open(file, filemode) ~~~~~~~^^^^^^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory: 'transactions.xlsx'
你提到文件和脚本在同一文件夹但还是报错,试过绝对路径和换文件夹也不行,我来给你几个排查和解决的方向:
VS Code终端的当前工作目录可能不是脚本所在文件夹
看你的终端命令,你是在C:\Users\Asit\Desktop\python目录下运行excel_project里的脚本,这时候Python会在python文件夹下找transactions.xlsx,而不是excel_project里的。解决办法有两个:- 在终端里先切换到脚本所在目录再运行:
cd c:\Users\Asit\Desktop\python\excel_project python excel.py - 在代码中动态获取脚本所在目录,拼接文件路径(推荐,彻底避免工作目录问题):
import os import openpyxl as xl # 获取当前脚本的绝对路径所在目录 script_folder = os.path.dirname(os.path.abspath(__file__)) # 拼接Excel文件的完整路径 excel_path = os.path.join(script_folder, "transactions.xlsx") wb = xl.load_workbook(excel_path)
- 在终端里先切换到脚本所在目录再运行:
检查文件名是否正确(含隐藏后缀)
有时候Windows默认隐藏了文件扩展名,可能你的文件实际叫transactions.xlsx.xlsx(显示的是transactions.xlsx),导致Python找不到。可以打开文件夹选项,勾选「显示文件扩展名」,确认文件名和你代码里写的完全一致,包括大小写(虽然Windows不敏感,但统一能避免不必要的问题)。确认文件未被占用或损坏
如果文件正在被Excel或者其他程序打开,可能会导致无法读取;另外文件本身损坏也会触发类似错误。先关闭所有打开该文件的程序,或者复制一份新的文件到脚本目录再测试。
备注:内容来源于stack exchange,提问作者Asit Patel
相关产品推荐
相关产品推荐

