由于工作需要用到xlwings实时操作Excel,在网上找了好久好久都没有找到解决的办法,后面无意间找到了一个方法,记录一下,以供需要的靓仔查阅。
xlwings中文文档地址:https://www.kancloud.cn/gnefnuy/xlwings-docs/1127450
连接到已经打开的Excel文件
import xlwings as xw
file = r'D:\jiankong\整点新模板6.0.xlsx'
wb = xw.Book(file) #xlwings.Book默认是启动新进程的(之前使用office的时候好像可以直接连接到已经打开的excel文件,但是用WPS的话会直接新打开一个进程。)
解决方法
首先,找到xlwings安装目录下的文件:你的python安装位置\Python39\Lib\site-packages\xlwings_xlwindows.py,
然后,找到代码313行
self._xl=COMRetryObjectWrapper(DispatchEx(‘Excel.Application’))
默认使用的是win32com模块下面的DispatchEx方法,此方法会启动一个新进程,把DispatchEx修改为Dispatch就可以啦
self._xl = COMRetryObjectWrapper(Dispatch(‘Excel.Application’))
如果你用的是WPS,修改代码为:
self._xl = COMRetryObjectWrapper(Dispatch(‘ket.Application’))
常规操作
import xlwings as xw
app = xw.App() # 新打开一个进程
# 禁用提示和屏幕刷新可以提升速度,操作完成后记得设置为True
app.display_alerts = False
app.screen_updating = False
# 新建book
wb = app.books.add()
wb.save(r'保存的路径及文件名.xlsx')
wb = xw.Book(file) # 连接到文件
wb.app.display_alerts = False #禁用刷新,层关系app>books>sheets>range
# 新建Sheet
app.books.sheets