xlwings 在 excel 中使用自定义 python 函数
0. xlwings 简介
xlwings 提供了四种用法:
- xlwings (Open Source), 本地 python模块、excel插件,代码在本地,运行在本地
- xlwings PRO, 商业版,收费
- xlwings Lite, 代码内置在excel文件中、运行在云端(代码公开)
- xlwings Server, 商业版,收费
1. xlwings (Open Source) 本地版,在 excel 中使用自定义 python 函数
1.1 excel 启用宏
文件
-> 选项
-> 信任中心
-> 信任中心设置
->宏设置
-> 勾选 启用VBA宏
和 信任对VBA工程对象模型的访问
1.2 安装 xlwings (Open Source)
1 |
|
1.3 快速使用
1 | xlwings config create --force |
xlwings quickstart
命令会自动建立一个文件夹,内部有两个文件:
- xlwings_test.xlsm
- xlwings_test.py
简单看一下 xlwings_test.py
的代码:
1 | import xlwings as xw |
1.4 测试 main 函数
打开 xlwings_test.xlsm
, 菜单栏切换到 xlwings 标签:
点击 Run main
: A1
表格 应该会出现 Hello xlwings!
再次点击 Run main
: A1
表格 应该会出现 Bye xlwings!
1.5 测试 hello 函数
打开 xlwings_test.xlsm
, 菜单栏切换到 xlwings 标签:
第一次导入 py 文件或有改动时, 点击 Import Functions
(或 Restart UDF Server
)。
在任单元格中输入 =hello
, 应该能弹出函数提示。
假设 D1 单元格内容为: xlwings for excel
, 在 D2 中填入: =hello(D1)
,
D2 最终返回 Hello xlwings for excel!
2. 自定义函数: 调用 numpy、pandas 插值函数
2.1 xlwings_test.py
自定义一个插值函数:xl_interp
1 | import xlwings as xw |
2.2 xlwings_test.xlsm
假设 G1 单元格内容为:2.5
; G2 单元格内容为:y1
,
在 G3 中填入: =xl_interp(G1, G2)
,
G3 最终返回:0.040065
3. xlwings Lite
xlwings Lite 也挺好用的
- 不需要本地有 python 环境。(基于 Pyodide)
- 代码内置在 excel 文档中。
- 库管理功能挺完善,numpy pandas scipy等基本库都没问题
- 第一次运行应该是要联网的
- 速度比本地慢一点,刷新计算时能感觉到,但也基本不影响正常使用
使用时直接在侧边栏中编写 python 代码,有一些基本的功能
- 配置安装 python 第三方库
- 代码格式化:
alt + shift + F
- 简单的终端窗口