Excel调用PlayWright
这是前两篇文章的继续,第一篇文章使用Playwright抓取动态网页,第二篇文章PowerBI抓取动态网页。今天是Excel通过Playwright抓取网页。
PlayWright本身支持C#和python,本来想使用C#的VSTO,结果VSTO只支持.net标准版,Playwright只支持.net core。
后来就找到了可以在Excel中调用python的xlwings。
安装xlwings
| 1 | conda create -n excel python xlwings pandas | 
新建一个conda环境,取名excel,安装xlwings和pandas两个包。
xlwings架起了excel和python的桥梁,使得excel通过VBA调用python,python也可以调用操作excel。pandas处理网页返回的数据,并将数据通过xlwing写入excel。
环境搭建
| 1 | conda activate excel # 激活虚拟环境 | 
xlwings quickstart pyexcel 新建名为pyexcel工程,-s 是将xlwing的excel插件写进文件里,可以独立运行,不需要xlwing插件,参见https://docs.xlwings.org/zh_CN/latest/addin.html 。
xlwings生成两个文件,pyexcel.xlsm和pyexcel.py。
将pyexcel.xlsm的_xlwings.conf页签更名为xlwings.conf,这是xlwing的配置文件。
 
xlwings配置文件有三个级别,全局、文件簿目录级、文件簿级,参见https://docs.xlwings.org/zh_CN/latest/addin.html
全局配置文件为.xlwings\xlwings.conf in your home folder, that is usually C:\Users<username>
文件簿目录配置文件为项目所在目录的xlwings.conf
文件簿级的配置文件为xlwings.conf页签
优先级别 文件簿 > 文件簿项目 > 全局
pyexcel.xlsm默认调用pyexcel.py中的main(),代码可以写在这里。
 
主要代码
| 1 | 
 | 
wb.app.api和wb.api返回一个标准excel对象,后面调用的属性方法和VBA的相同。
| 1 | def response(res): | 
在excel中,运行宏SampleCall()即可调用上面代码,最后生成MiddlePETTM的execl table。
