再見VBA,在Excel中直接調用Python代碼

偶然在知乎上看到一個問題,問能否在excel中調用python代碼:

覺得很有意思,于是查了一下資料,發現python的xlwings模塊可以插入excel中,像VBA一樣運行,這對廣大python愛好者來說簡直是福音
下面給大家詳細介紹一下,如何在excel中調用python代碼
第一步:在excel中加載xlwings模塊
關于wlxings的使用,前面已經發過,具體參考python自動化辦公|批量處理Excel文件的利器-xlwings,這里不再贅述
首先將xlwings模塊作為excel功能區的選項卡
依次點擊“文件-選項”,打開如下對話框:

點擊“信任中心-信任中心設置=宏設置”,勾選“信任對VBA工程對象模型的訪問”:

點擊功能區“開發工具-加載宏”,勾選Xlwings:
如果沒有Xlwings,可以點擊“瀏覽”,選擇xwlings安裝目錄下的xlwings.xlam文件,加載進去就OK了

這時候就能在excel的功能區看到xlwings模塊了

第二步:導入并調用python代碼
利用Xlwings模塊的quickstart快速創建帶宏的工作蒲和python代碼文件,具體操作如下。
WIN+R輸入cmd打開命令行,用cd命令切換至你想要的路徑,在路徑下輸入命令“xlwings quickstart table”:

若出現如上信息,表示文件創建成功,可以在文件夾內發現以下文件:

打開table.py文件,可以看到自動生成的python代碼:

內有main()和hello()函數,可以實現相應的功能
我們打開table.xlsm文件,依次點擊功能區“xlwings-Import Functions”,等加載完畢,在A1單元格輸入hello()函數:


按回車:

這樣就實現了在excel中調用python自定義函數了
第三步:舉一反三
我們再定義一個函數even_to_odd,可以實現偶數變奇數,代碼如下:
- @xw.func
- def even_to_odd(x):
- if x%2==0:
- x=x-1
- return x
放入table.py文件中并運行,依次點擊功能區“xlwings-Import Functions”,等加載完畢,如下輸入even_to_odd()函數:
