树袋熊|打破Excel与Python的隔阂,xlwings最佳实践( 二 )
这通过动态数组公式完成这个任务 。 首先打开 myproject.py 文件 , 自定义一个函数:
- 行1 , 2:导入需要的库
- 行6-11:加载数据的自定义函数 , 其中的逻辑非常简单 , 使用 pandas 加载数据 , 返回结果即可
- 行4:@xw.func,xlwings 的装饰器 , 标记此函数是一个公式 , 这会让函数成为 Excel 中的函数公式
- 行5:@xw.ret(expand='table'),xlwings 的装饰器,"ret" 应该是 "return" 的意思, 它是函数返回值相关的设置 。 这里参数 expand='table', 这会让公式变成一个自动扩展范围的动态数组公式(结果是一个表 , 行列数都是动态的)
幸运的是 , Excel 可以识别 vba 定义的函数 。 因此 , 我们需要 xlwings 帮我们自动生成 vba 代码 。
打开 Excel 文件 myproject.xlsm(注意要启动宏):
- 在 xlwings 页中 , 点击 import Functions 的大按钮 , 意思是"导入 Python 文件中的函数"
按照参数 , 选择对应的单元格引用即可:
回车后发现返回一段错误信息:
- 显然 , 我们还没有输入文件路径
- 你会发现公式自动变成了数组公式
接下来我将讲解其运行机制的直觉理解 。
直觉理解运行机制目前为止 , 我们没有编写一句 vba 代码 , 只是简单定义出一个加载数据的 Python 自定义函数 , 就可以在 Excel 上使用公式实现效果 。
从步骤上来说:
- 定义 Python 自定义函数(在文件 myproject.py 中)
- 点击"导入函数"的按钮(在 Excel 文件 myproject.xlsm 中)
如果我修改了 Python 代码 , 需要重新点击这个按钮吗?
首先 , 我们之所以能在 Excel 上输入公式时 , 出现我们的自定义函数 , 是因为在这个 Excel 文件中 , 存在 vba 代码 , 定义了同名的方法:
- 从 vbe 界面中可以看到 , 当我们点击"导入函数"按钮时 , xlwings 在按照 Python 文件中定义的函数 , 生成了对应的 vba 代码
- 其中也能看见 , 调用时需要 Python 文件名 , 函数名字 , 和其他的参数
推荐阅读
- 詹姆斯|太强了吧!詹姆斯又打破NBA记录,比他更强的只剩库里了
- 绿色青浦|浦发银行:打破区域壁垒 打造“同城化”体验
- ZAKER生活|打破该年龄段前锋最高引援纪录!,球天下-狼队引进18岁新C罗
- 俄罗斯|印度打破以往记录,GDP创历史新低,而中国成为全球“亮点”
- 未央网|Nubank:打破巴西金融市场垄断的新兴数字银行
- 树袋熊|中国科学家发布亿级神经元类脑计算机
- 树袋熊|这个技术,让我放弃了戴套
- 雄鹿|0-3落后0次逆转,打破魔咒至少需3条件,雄鹿能满足几个?
- 碰碰战队|5G毫米波芯片行业深度市场调研 打破国外垄断后前景更广阔
- 新华社|新华财经|PP体育与英超解约 打破体育赛事版权费泡沫迎契机