You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用openpyxl的Python脚本运行后无输出、不打印工作表名称是什么原因?

问题排查及解决方案

问题背景

Windows 10系统Visual Studio Code中运行openpyxl相关Python脚本,预期读取同目录下socal.xlsx文件并打印工作表名称,无输出无报错,已确认文件与脚本存放在同一目录,运行终端输出如下:

PS C:\Users\kielk\Desktop> & C:/Users/kielk/AppData/Local/Programs/Python/Python310/python.exe c:/Users/kielk/Desktop/atb.py

可能原因及对应解决方法

  • Excel文件被独占锁定:若socal.xlsx此时正通过Excel软件打开,Windows系统会对文件加独占锁,openpyxl加载被锁定文件时可能出现无报错但无有效内容返回的情况,关闭打开的xlsx文件后重新运行脚本即可。
  • 文件格式与后缀不匹配:若socal.xlsx是通过直接修改xls等其他格式文件后缀得到,并非原生Office Open XML格式,openpyxl仅支持原生xlsx/xlsm/xltx/xltm格式,读取非标准xlsx文件时可能无返回。解决方法是用Excel打开文件后另存为标准xlsx格式再运行脚本。
  • 终端输出缓冲未即时刷新:部分终端配置下print输出会暂存缓冲区未即时打印到终端,可以在print语句中添加flush=True参数强制刷新缓冲,调整后代码如下:
import openpyxl as op

wb = op.load_workbook('socal.xlsx')
print(wb.sheetnames, flush=True)
  • 文件包含宏或加密属性:如果xlsx文件带有VBA宏或者设置了只读密码,需要给load_workbook添加对应参数,带宏的文件需要添加keep_vba=True参数,调整后加载代码为:
wb = op.load_workbook('socal.xlsx', keep_vba=True)
  • openpyxl版本兼容缺陷:旧版本openpyxl对部分新版Excel生成的xlsx格式支持存在问题,可以通过升级openpyxl版本解决,执行如下命令:
    pip install --upgrade openpyxl

内容的提问来源于stack exchange,提问作者Kris Kiel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:57:02