问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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

创作时间:
作者:
@小白创作中心

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

引用
CSDN
1.
https://m.blog.csdn.net/w1040536527/article/details/139881835

本文将详细介绍如何在WPS中使用xlwings库的完整功能,包括创建项目、使用自定义函数等。对于需要在WPS中使用xlwings的用户来说,具有很高的实用价值。

在WPS中使用xlwings需要进行一些特定的设置。以下是详细的步骤:

1. 安装VBA for WPS

需要专门安装一个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页签的设置

  1. Run main : 点击后,会运行项目同名python文件的main函数
  2. interpreter : 如果没有安装过anaconda,只安装过python,那么把python文件的全路径,包含exe的填入,如果是anaconda的则不用填写
  3. PYTHONPATH : 如果项目的表格和python文件不在同一个目录,则需要填写(只填写对应的文件夹路径就行),因为我们是通过xlwings的命令创建的项目,对应的py文件和表格在同一个目录中,则无需填写。
  4. Add workbook to PYTHONPATH 这个为默认勾选状态的,无需变更
  5. Conda Path : 如果是安装了anaconda的,则需要填写anaconda的文件夹路径,无需填写到python.exe
  6. Conda Env : conda环境的选择,一般没有设置过专门的虚拟环境的话,填写base即可。(填写完都需要点击enter键生效)
  7. 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文件中做一次性设置,后面再看看怎么改,目前先用了这个临时方法)
  8. UDF modules : 如果项目中有多个py文件中都写了代码,都需要被导入时,需要填写,填写时不带.py的后缀的文件名称即可,无需填写完整路径(路径在PYTHONPATH设置了),多个文件之间用英文分号分隔。因为我们的python文件和表格名称同名,且只有一个python,则无需填写
  9. Debug UDFs : 好像勾选了之后,会导致程序错误,因此不勾选
  10. Restart UDF Sever : 点击后会重新运行表格后台作为支撑的python服务器
  11. RunPython : Use UDF Server
    这个按钮勾选了,就会使用UDF Server来运行 “Run main” 的按钮,这不会每次点击“Run main”时都重新开关一次python进程,运行Runmain 会快很多,建议开启
  12. Show Console : 如果勾选了,则运行的python代码会弹出一个命令行窗口用来展示,方便调试python代码,前期建议开启。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号