WPS用Python写自定义公式

wils
wils

创作者俱乐部成员

今天要介绍的是xloil这个库,只需要简单写一个py,就可以在wps里使用自定义公式,还可以通过xlosql公式直接写sql查询,速度比xlwings快

下面介绍安装办法:

  • 先下载embed版32位的python,比如python-3.8.10-embed-win32.zip,解压

  • 修改python38._pth,删除import site前面的井号,保存

  • 下载get-pip,放到python.exe所在目录,在cmd里执行python get-pip.py

  • 这里不用执行官方文档里的xloil install,因为它是用来配置Excel的,我们手动改ini

  • 进入share\xloil目录,修改xloil.ini文件

  • XLOIL_PATH='C:\Users\Administrator\Desktop\python-3.8.10-embed-win32\share\xloil',这里改成解压缩python所在的目录

  • LoadModules=["xloil.xloil_ribbon"],这里改成LoadModules=[]

  • PYTHONEXECUTABLE='''C:\Users\Administrator\Desktop\python-3.8.10-embed-win32\python.exe''',这里改成解压缩python所在的目录

  • 打开wps表格,在加载项里浏览"C:\Users\Administrator\Desktop\python-3.8.10-embed-win32\share\xloil\xlOil.xll",加载后,就可以使用xlo的公式了

  • 注意,这里没有设置python的环境变量,且没有把xloil.ini安装到AppData\Roaming\xlOil里,这样有利于分发给其他人用,只需要把embed python这个目录压缩,发给别人,别人解压后,修改ini里指向python的路径,就可以加载xll后使用

  • 自定义的py文件可以放到share\xloil里,然后在xloil.ini里修改LoadModules=["你的py文模块名"]

需要注意的是,appdata里的xloil.ini会优先被加载,所以如果你没有安装excel,就不要执行xloil install命令,否则需要优先修改appdata里的ini

另外,如果你安装了多个python版本,环境变量PATH需要注意

海南省
浏览 7904
5
12
分享
12 +1
20
5 +1
全部评论 20
 
cp3
你好,可否详细讲一下,启用ribbon后,"xloil_ribbon.ComAddin"添加到注册表白名单的步骤,没找到在哪添加,谢谢!
· 上海
回复
wils
wils

创作者俱乐部成员

您好,在这里 计算机\HKEY_CURRENT_USER\SOFTWARE\kingsoft\Office\ET\AddinsWL 这一年多变化很大,不知道wps是否已经默认添加了这个项目 而且,xloil只能用佬版本了,新版本报错 pip install xloil==0.19.1 如果需要新版本,应该向官方反馈一下这个问题
· 海南省
回复
 
cp3
自定义函数返回二维数组在WPS2019版本中,只显示第一个单元格,不能自动扩充,选中一个区域Ctrl+Shift+Enter倒是可以,但没办法准备控制区域大小,过大的区域会显示#N/A,想请教大神有什么解决办法?WPS最新版本可以动态填充单元格。
· 上海
回复
wils
wils

创作者俱乐部成员

不敢当,我没办法,当时大家也是三键填充 也就这几年wps突然发力,提供了不少新功能,比如自动填充就是期待很久才有的 依稀记得当时xlwings可以在旧版本Excel上实现数组自动溢出,但没去深究它怎么实现的,也许可以参考
· 海南省
回复
 
jkw
wps加载xlOil.xll时报错,Failed to load xlOil.dll, check XLOIL_PATH in ini file
· 浙江省
回复
wils
wils

创作者俱乐部成员

我试了一下最新的32位wps还能用 确定一下wps和python都是32位,且ini里的路径设置正确
· 海南省
回复
 
大文刀
谢谢分享。想处理文本字段,用VB编的自定义函数太长,终于找到python自定义函数的方法了。
· 辽宁省
回复
 
一场凉凉雪
选中后没有xlOil.xll文件
· 广东省
回复
 
dhzgfchx
提示无效加载项
· 广东省
回复
wils
wils

创作者俱乐部成员

Python是不是32位的? 现在正在用,应该没啥问题的
· 广东省
回复
 
厚积、薄发
11
· 山东省
回复