xlwings - 讓Excel飛起來
說明:我的xlwings版本是0.11.5冰单。老一點的版本可能需要經(jīng)過額外的設(shè)置,其excel插件才能用霎终。
xlwings是一個python的庫滞磺,支持從Excel調(diào)用Python,也支持通過Python去操作Excel神僵。
官方說明雁刷、網(wǎng)上的文章已經(jīng)有很多了。
官方網(wǎng)站:xlwings官網(wǎng)
文檔鏈接:xlwings文檔
這里總結(jié)如何從Excel通過加一個Macro(宏)保礼,點擊一個按鈕來調(diào)用Python,從而實現(xiàn)對Excel的操作责语。
需求:通過點擊Excel中的一個按鈕炮障,通過VBA調(diào)用Python代碼,實現(xiàn)對Excel的操作坤候。
我的環(huán)境:Win 10 64位胁赢,Excel 2016, Python 3.6(我安裝的是Anaconda 3智末,64 位,有pip工具)
案例:點擊一個按鈕徒河,單元格A1中出現(xiàn)Hello系馆,world由蘑!
效果圖
基本流程
假設(shè)我的py代碼都寫好了(后面當(dāng)然要用)
# -*- coding: utf-8 -*-
import xlwings as xw
def say_hi():
wb = xw.Book.caller()
sht = wb.sheets[0]
sht.range('A1').value = 'Hello, world'
Excel裳擎,開啟對宏(macro)的支持恃轩。
Excel筷厘,顯示開發(fā)工具選項卡摊溶。
Excel骤铃,保存為啟用宏的工作簿惰爬。
安裝xlwings喊暖,并測試安裝成功。
Excel补鼻,顯示xlwings選項卡哄啄,這樣才可以在Excel中通過VBA執(zhí)行py和用戶自定義函數(shù)(UDF)雅任。
配置python編譯器路徑,以及執(zhí)行的py文件路徑
在VBA中咨跌,寫一個宏(執(zhí)行py文件的say_hi函數(shù))沪么。插入按鈕,并綁定該宏
- 開啟宏支持
Excel 文件 - 選項 - 信任中心 - 宏設(shè)置 - 啟用所有宏
- 顯示“開發(fā)工具”選項卡
Excel選項 - 自定義功能區(qū) - 開發(fā)工具(勾選)
至此锌半,出現(xiàn)了開發(fā)工具的選項卡禽车。
-
保存為啟用宏的工作簿 (*.xlsm)
-
安裝xlwings,并測試安裝成功
-
讓Excel顯示xlwings選項卡
Excel - 開發(fā)工具 - 查看代碼刊殉,打開 VBA
工具 - 引用殉摔,勾選xlwings
注意:你會發(fā)現(xiàn),根本就沒有xlwings這個選項记焊。
找到xlwings的addin文件夾逸月,打開xlwings.xlam文件,自然就出現(xiàn)了xlwings選項卡了遍膜。
此時再勾選xlwings碗硬。
勾選RunPython: Use UDF Server
這樣一旦執(zhí)行py的話,會啟一個黑窗口瓢颅,此后執(zhí)行py速度要比不勾選快
應(yīng)該是不需要每次運行的時候都加載py文件了
但是這樣的話恩尾,修改了py文件,需要把黑窗口關(guān)掉挽懦,重新導(dǎo)入
其實感覺就相當(dāng)于是Debug模式還是Release模式
再到VBA中對勾選xlwings的支持翰意。
-
配置編譯器路徑,需要執(zhí)行的py文件路徑
interpreter:編譯器信柿,找到python.exe(我的是anaconda 3冀偶, 一步到位)
PYTHONPATH:py文件路徑
- 寫宏,插入按鈕角塑,綁定宏
Sub hi()
RunPython ("from xw import say_hi; say_hi()")
End Sub
開發(fā)工具 - 插入 - 表單控件(按鈕)
編輯文字蔫磨,指定宏
最后,點擊按鈕圃伶,Done!