Excel已启动时,使用openpyxl加载工作簿无内容加载的问题求助
Excel已启动时,openpyxl加载工作簿无反应?
我的问题
Excel已经启动运行的状态下,我在一段Python代码的末尾尝试用下面的代码加载两个Excel工作簿,但完全看不到任何加载效果,相关代码如下:
from urllib.request import urlopen from bs4 import BeautifulSoup import csv import datetime import openpyxl import time openPythonQuoteLS = openpyxl.load_workbook('c:\ls_equity\quote\PythonQuoteLS.xlsx') openQuoteLS = openpyxl.load_workbook('c:\ls_equity\quote\QuoteLS.xlsm')
解决方案&分析
兄弟,先给你戳破一个核心关键点:openpyxl和你手动打开的Excel是完全独立的两个进程!openpyxl是在Python进程里直接读写Excel文件本身,它不会把加载的工作簿显示在你已经打开的Excel应用窗口里——这就是你看不到任何“加载”效果的根本原因。
接下来分两种场景给你对应的解决思路:
场景1:仅需读写文件,不需要在Excel界面显示
其实你的代码可能已经成功加载文件了,只是你没做验证而已。可以加几行简单的代码确认:
# 打印第一个工作簿的所有工作表名称 print(openPythonQuoteLS.sheetnames) # 获取第二个工作簿的活跃工作表,打印A1单元格内容 ws = openQuoteLS.active print(ws['A1'].value)
运行后如果能输出对应的工作表名或单元格内容,说明文件已经加载成功,只是没在Excel界面展示罢了。
场景2:需要在已打开的Excel里显示工作簿
那openpyxl就满足不了需求了,得用能和Windows系统里的Excel应用直接交互的库,比如pywin32(即win32com.client)。示例代码给你写好:
import win32com.client as win32 # 连接到已经在运行的Excel实例 excel_app = win32.GetActiveObject("Excel.Application") # 打开指定工作簿,这时候就会在你已打开的Excel窗口里显示了 workbook1 = excel_app.Workbooks.Open(r'c:\ls_equity\quote\PythonQuoteLS.xlsx') workbook2 = excel_app.Workbooks.Open(r'c:\ls_equity\quote\QuoteLS.xlsm') # 确保Excel可见(其实已经打开了,保险起见加一行) excel_app.Visible = True
额外踩坑提醒:路径转义问题
你原来的路径写法c:\ls_equity\quote\PythonQuoteLS.xlsx有隐患!Python里\l、\q这类字符会被识别为转义序列,导致路径解析错误,这也可能是文件加载失败的隐形原因。解决方法选一种即可:
- 用原始字符串(加r前缀):
r'c:\ls_equity\quote\PythonQuoteLS.xlsx' - 用双反斜杠:
'c:\\ls_equity\\quote\\PythonQuoteLS.xlsx' - 用正斜杠:
'c:/ls_equity/quote/PythonQuoteLS.xlsx'
如果之前代码没报错,建议先检查路径问题,再根据自己的实际需求选择对应的方案~
内容的提问来源于stack exchange,提问作者Merc1203
相关产品推荐
相关产品推荐

