這裏補一段xlwings的安裝方式(更簡單,如果有效的話,但不確定是否有效,慎重!)
1. 先卸載掉原來可能存在的xlwings
pip uninstall xlwings
conda uninstall xlwings
2. 下載安裝xlwings
pip install xlwings
(如果有離線安裝包,就進去,有個setup.py的文件
python setup.py install)
3. 再安裝excel插件
xlwings addin install
---------------
xlwings - 讓Excel飛起來
說明:我的xlwings版本是0.11.5。老一點的版本可能需要經過額外的設置,其excel插件才能用。
xlwings是一個python的庫,支持從Excel調用Python,也支持通過Python去操作Excel。
官方說明、網上的文章已經有很多了。
官方網站:xlwings官網
文檔鏈接:xlwings文檔
這裏總結如何從Excel通過加一個Macro(宏),點擊一個按鈕來調用Python,從而實現對Excel的操作。
需求:通過點擊Excel中的一個按鈕,通過VBA調用Python代碼,實現對Excel的操作。
我的環境:Win 10 64位,Excel 2016, Python 3.6(我安裝的是Anaconda 3,64 位,有pip工具)
案例:點擊一個按鈕,單元格A1中出現Hello,world!
效果圖
基本流程
假設我的py代碼都寫好了(後面當然要用)
# -*- coding: utf-8 -*-
import xlwings as xw
def say_hi():
wb = xw.Book.caller()
sht = wb.sheets[0]
sht.range('A1').value = 'Hello, world'
1. Excel,開啓對宏(macro)的支持。
2. Excel,顯示開發工具選項卡。
3. Excel,保存爲啓用宏的工作簿。
4. 安裝xlwings,並測試安裝成功。
5. Excel,顯示xlwings選項卡,這樣纔可以在Excel中通過VBA執行py和用戶自定義函數(UDF)。
6. 配置python編譯器路徑,以及執行的py文件路徑
7. 在VBA中,寫一個宏(執行py文件的say_hi函數)。插入按鈕,並綁定該宏
1. 開啓宏支持
Excel 文件 - 選項 - 信任中心 - 宏設置 - 啓用所有宏
2. 顯示“開發工具”選項卡
Excel選項 - 自定義功能區 - 開發工具(勾選)
至此,出現了開發工具的選項卡。
3. 保存爲啓用宏的工作簿 (*.xlsm)
4. 安裝xlwings,並測試安裝成功
5. 讓Excel顯示xlwings選項卡
Excel - 開發工具 - 查看代碼,打開 VBA
工具 - 引用,勾選xlwings
注意:你會發現,根本就沒有xlwings這個選項。
找到xlwings的addin文件夾,打開xlwings.xlam文件,自然就出現了xlwings選項卡了。
此時再勾選xlwings。
勾選RunPython: Use UDF Server
這樣一旦執行py的話,會啓一個黑窗口,此後執行py速度要比不勾選快
應該是不需要每次運行的時候都加載py文件了
但是這樣的話,修改了py文件,需要把黑窗口關掉,重新導入
其實感覺就相當於是Debug模式還是Release模式
再到VBA中對勾選xlwings的支持。
6. 配置編譯器路徑,需要執行的py文件路徑
interpreter:編譯器,找到python.exe(我的是anaconda 3, 一步到位)
PYTHONPATH:py文件路徑
7. 寫宏,插入按鈕,綁定宏
Sub hi()
RunPython ("from xw import say_hi; say_hi()")
End Sub
開發工具 - 插入 - 表單控件(按鈕)
編輯文字,指定宏
最後,點擊按鈕,Done!