xlwings实时操作WPS-excel记录

本文档记录了如何使用xlwings连接并操作已打开的WPS Excel文件。通过修改xlwings_xlwindows.py文件中DispatchEx为Dispatch,解决了启动新进程的问题。对于WPS用户,需改为Dispatch('ket.Application')。此方法适用于需要实时操作Excel的场景。
摘要由CSDN通过智能技术生成

由于工作需要用到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’))

image.png
如果你用的是WPS,修改代码为:
self._xl = COMRetryObjectWrapper(Dispatch(‘ket.Application’))

image.png

常规操作

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
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值