树袋熊|打破Excel与Python的隔阂,xlwings最佳实践( 三 )
vbe 是 编写 vba 代码的界面 。 通过快捷键 alt + F11 即可打开
因此 , Excel 公式执行时 , 会转而执行 Python 文件中的同名函数 。
理解这点非常重要 , 从中可以得知:
- 如果 Python 中的函数名字或参数数量有增减 , 则需要重新点击"导入函数"按钮
- 如果只是函数中的实现代码有变动 , 无须点击"导入函数"按钮
- 我们希望返回结果的前10行
- 只有10行结果
如果你是制作工具给别人使用的情况下 , 就需要知道代码变动后 , 哪些文件(Excel或Python文件)需要更新
进一步完善首先 , 我们希望返回结果不要把 DataFrame 的行索引输出:
这可以通过装饰器的参数设置:
- 行5:设置 ret 装饰器的参数 index 为 False 即可
- 此外通过参数 header 也能控制是否输出表头
你会发现即使数据文件就在项目文件夹中 , 使用相对路径是读取不到文件 。
但是 , 每次输入全路径太麻烦了 , 如果能输入相对路径就很好了 。
这问题由于 xlwings 在执行 vba 的方法时 , 会启动一个 Python 进程(只有首次运行的时候) , 然后加载 myproject.py 中的代码 。 但他没有设置启动目录 。
因此默认情况下启动目录是 Python.exe 所在目录 。
我们只需要在 myproject.py 中修改启动目录即可:
现在可以支持相对路径:
文件名字如果可以下拉选择就好了!
我们来看看如何实现
充分利用 Excel 功能首先 , 我们需要一个能找出 myproject.py 文件所在目录的所有 Excel 文件 , 我们使用 Python 实现这功能(这不是 vba 擅长的):
- 保存文件后 , 记得"导入函数"
到界面工作表 , 为 B1 单元格设置数据有效性:
推荐阅读
- 詹姆斯|太强了吧!詹姆斯又打破NBA记录,比他更强的只剩库里了
- 绿色青浦|浦发银行:打破区域壁垒 打造“同城化”体验
- ZAKER生活|打破该年龄段前锋最高引援纪录!,球天下-狼队引进18岁新C罗
- 俄罗斯|印度打破以往记录,GDP创历史新低,而中国成为全球“亮点”
- 未央网|Nubank:打破巴西金融市场垄断的新兴数字银行
- 树袋熊|中国科学家发布亿级神经元类脑计算机
- 树袋熊|这个技术,让我放弃了戴套
- 雄鹿|0-3落后0次逆转,打破魔咒至少需3条件,雄鹿能满足几个?
- 碰碰战队|5G毫米波芯片行业深度市场调研 打破国外垄断后前景更广阔
- 新华社|新华财经|PP体育与英超解约 打破体育赛事版权费泡沫迎契机