PQ 中 xlwings REST API 调用问题

一看到是rest api应该就知道我要干嘛了吧。
xlwings是python中一个操作excel的库,与excel的交互实现也非常容易,下面简单根据官方介绍理一理实现过程:
1.安装python
2.pip安装xlwings和flask
3.cmd命令:xlwings restapi run
默认弹出接口服务启动黑框会提示你接口根地址:127.0.0.1:5000
不要关闭这个命令黑框,如果此时我们在浏览器地址栏输入:127.0.0.1:5000/apps
将会返回:{"apps":[]}
如果你现在有打开的工作簿或者新建工作簿后刷新上面那个网址就会返回打开的工作簿元信息。
file
里面中文使用unicode字符表示,PQ里面json解析可以显示为中文!
当然如果需要引用当前打开工作簿也可以使用:http://127.0.0.1:5000/books
引用某个工作簿可以使用:http://127.0.0.1:5000/books/0
或者:http://127.0.0.1:5000/books/工作簿1
或者http://127.0.0.1:5000/book/工作簿1
有的时候我们可能不止开一个excel进程,可以从指定的进程通过pid号定位工作簿,如上面的pid=8124的进程:http://127.0.0.1:5000/apps/8124/books
同一个进程也可以打开多个excel工作簿,所以上面有通过索引方式和工作簿名字两种方式定位工作簿。
进一步引用工作表就是:http://127.0.0.1:5000/books/0/sheets/0
或者:http://127.0.0.1:5000/books/0/sheets/表1
或者:http://127.0.0.1:5000/apps/8124/books/0/sheets/0
或者:http://127.0.0.1:5000/apps/8124/books/0/sheets/表1
或者:http://127.0.0.1:5000/book/工作簿1/sheets/0
或者:http://127.0.0.1:5000/book/工作簿1/sheets/表1
对应的引用表中单元格继续/range即可!
当然单元格可以进一步限定区域及相关扩展条件:
如:http://127.0.0.1:5000/book/工作簿1/sheets/0/range/A1:B2
http://127.0.0.1:5000/book/工作簿1/sheets/0/range/A1?expand=table
http://127.0.0.1:5000/book/工作簿1/sheets/0/range/A1?expand=table&transpose=true
http://127.0.0.1:5000/book/工作簿1/sheets/0/range/A1?expand=table&transpose=true&empty=吹牛逼
除了上面这些还可以定位到表中的名称或者图表、图形等资源信息!
相关资源定位格式写法参考:https://docs.xlwings.org/en/stable/rest_api.html
PQ中想要用上面的接口是老套路了:
Json.Document(Web.Contents("http://127.0.0.1:5000/book/工作簿1/sheets/0/range/A1?expand=table&transpose=true&empty=吹牛逼"))
配合前面的FLASK我们可以操作更多excel对象实现类似VBA的交互操作,xlwings其他相关api操作:https://docs.xlwings.org/en/stable/api.html
进一步可以结合python的多线程控制!
笔者为什么单单要提出这个包,还有一个原因,这个包在excel中作为插件调用python脚本做工作表自定义函数或者VBA中运行python脚本也非常刺激:https://docs.xlwings.org/en/stable/udfs.html
当然还有图表操作相关的知识:https://docs.xlwings.org/en/stable/matplotlib.html
至于网友提的在PQ里面使用excel工作表函数的奇葩问题,今天告诉你那根本不是事儿!!!

道高一尺 魔高一丈
https://pbihub.cn/users/44
M与DAX的恩怨纠葛