如何在wps中使用xlwings 的全功能

按照本文的设置后,支持的功能包含用xlwings创建项目后可以使用自定义函数

在excel中使用xlwings非常的顺滑,但是在wps中使用需要一些设置。

1. 专门安装vba for wps 一个专门的软件安装包,可以百度搜索后安装,只要安装完后,就可以在wps中使用vba

2. 将wps设置为多组件模式

点击左上角的wps,然后点击进入设置。将切换窗口管理模式 设置为多组件模式

如果不设置这个,在wps中不能使用xlwings直接定位一个已经打开的表格。  如wb=xw.Book('a.xlsx')    (其中a.xlsx 已经通过wps 打开)

3. 关闭沙盒保护

还是在原来的设置页面,默认是打开状态,需要关闭。不然一些vba的代码会提示拒绝的权限。(xlwings生成项目时,自动生成的表格和插件中用到的VBA代码,如果开了沙盒保护就会报错)

4、添加VB项目访问信任

在工具的页签中点击宏安全性,弹出窗口后,点击“可靠发行商”,然后勾选“信任对于“Visual Basic 项目”的访问”。这个设置和在excel中的信任中心--宏设置--信任对VBA工程对象模型的访问  功能一致。

如果不设置信任,同样xlwings注入的vba代码会报错(无法使用注入自定义函数)

5.设置wps信任宏文件

点击左上角的文件--选项,信任中心---勾选“启用宏后自动添加为受信任的文档”。这一步主要是不用每次点开表格后,都去点击启用宏。

6.将xlwings插件安装到wps中

运行命令行工具,输入

xlwings addin install

就会自动在wps的安装路径里多了一个xlwings.xlam

我电脑里这个文件的路径是:C:\Users\dearj\AppData\Local\Kingsoft\WPS Office\12.1.0.17133\office6\startup\xlwings.xlam

(可以用everything 去搜索对应的文件,找到地址)

7. 在wps中加载xlwings 插件

点击工具--加载项--浏览--找到刚才xlwings.xlam的路径,点击打开,就会自动加载xlwings的插件。之后每次打开wps的表格时,都会加载了。

加载后的效果是会在页签中多一个xlwings 的页签。

以上为基本软件设置,只需设置一遍即可。截图中的表格可以随便打开一个用来设置即可。为了能在xlwings项目中使用自定义函数,还需要一个步骤。

首选我们先创建一个xlwings的项目。可以在命令行中输入:

xlwings quickstart myproject

 此时会在当前目录中新增一个myproject的文件夹,其中有一个myproject.xlsm的文件,打开它。

打开后找到xlwings的页签,先设置一下选框 的值,填完后按enter确认。

xlwings 页签的设置

0. Run main : 点击后,会运行项目同名python文件的main函数

1. interpreter  : 如果没有安装过anaconda,只安装过python,那么把python文件的全路径,包含exe的填入,如果是anaconda的则不用填写

2. PYTHONPATH : 如果项目的表格和python文件不在同一个目录,则需要填写(只填写对应的文件夹路径就行),因为我们是通过xlwings的命令创建的项目,对应的py文件和表格在同一个目录中,则无需填写。

3、Add workbook to PYTHONPATH 这个为默认勾选状态的,无需变更

4、Conda Path : 如果是安装了anaconda的,则需要填写anaconda的文件夹路径,无需填写到python.exe

5. Conda Env : conda环境的选择,一般没有设置过专门的虚拟环境的话,填写base即可。(填写完都需要点击enter键生效)

6. import functions : 点击后可以将项目对应的同名python文件中的自定义函数和宏等内容导入到VBA的模块中,这样就能直接在表格中使用python中填写的函数和宏了。

每次点击import functions  ,VBA中的模块:“xlwings_udfs” 内容都会被刷新,因此不要把自己的代码填写到这边(会被覆盖)。

注意每次点击“import functions”后,还是会有一个报错提示,如果你已经按照我上面的设置,设置过了,则无需关注,程序还是能正常运行。(原因是python调用vba写VBA代码的com函数有报错)

注意这边代码的第二行,#Const App = "Microsoft Excel" 'Adjust when using outside of Excel

原来这边的app值为"Microsoft Excel",这样在下面走if语句时,就会走带有Application.Caller 参数的XLPY.CallUDF函数,目前这个有bug,如果不修改的话会有问题

因此我将app的值修改了,只要不等于"Microsoft Excel"就行,这样就不会在传递数据时,传入Application.Caller

每次import functions 之后,都修改一下这个app的值,就能使用自定义函数(可能可以在python文件中做一次性设置,后面再看看怎么改,目前先用了这个临时方法)

7.  UDF modules  : 如果项目中有多个py文件中都写了代码,都需要被导入时,需要填写,填写时不带.py的后缀的文件名称即可,无需填写完整路径(路径在PYTHONPATH设置了),多个文件之间用英文分号分隔。因为我们的python文件和表格名称同名,且只有一个python,则无需填写

8. Debug UDFs : 好像勾选了之后,会导致程序错误,因此不勾选

9. Restart UDF Sever : 点击后会重新运行表格后台作为支撑的python服务器

10. RunPython : Use UDF Server

这个按钮勾选了,就会使用UDF Server来运行 “Run main” 的按钮,这不会每次点击“Run main”时都重新开关一次python进程,运行Runmain 会快很多,建议开启

11. Show Console  : 如果勾选了,则运行的python代码会弹出一个命令行窗口用来展示,方便调试python代码,前期建议开启。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值