python使用xlwings操作wps

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

xlwings操作wps

  • 前言
  • 方式一、使用参数spec
  • 方式二、更改xlwings源代码
  • 更改如下:创建一个impl传入


前言

最近写了一个小工具,需要读写excel,选择了xlwings库。现在很多电脑使用wps
找了各种资料,网上普遍存在以下两种方法


方式一、使用参数spec

app = xw.App(spec=‘wpsoffice’)
测试无效,报错
spec is ignored on Windows.

方式二、更改xlwings源代码

找到单元 xlwings._xlwindows

self._xl = COMRetryObjectWrapper(DispatchEx("Excel.Application"))

更改为

self._xl = COMRetryObjectWrapper(DispatchEx("ket.Application"))

测试成功,但是更改源代码始终觉得不合适

在第二种方法基础上,分析源代码
依次调用如下函数,最后到达方法二的代码处python使用xlwings操作wps_第1张图片
python使用xlwings操作wps_第2张图片
python使用xlwings操作wps_第3张图片
在这里插入图片描述
python使用xlwings操作wps_第4张图片

分析代码,只需要,创建一个impl,作为参数传入,就可以,参照原始代码

self.impl = engines.active.apps.add(
    spec=spec, add_book=add_book, visible=visible
).impl
if visible or visible is None:
    self.visible = True

更改如下:创建一个impl传入

app = xw.App(visible=False, add_book=False)

更改为

_xl = COMRetryObjectWrapper(DispatchEx("ket.Application"))
impl = xw._xlwindows.App(visible=False, add_book=False, xl=_xl)
app = xw.App(visible=False, add_book=False, impl=impl)

测试读写都正常,本人也是刚开始接触,如果写的不对,希望大家指正

你可能感兴趣的:(xlwings,wps,python)