這次我們會介紹如何使用xlwings將Python和Excel兩大資料工具進行整合,更便捷地處理日常工作。
說起Excel,那絕對是資料處理領域王者般的存在,儘管已經誕生三十多年了,現在全球仍有7。5億忠實使用者,而作為網紅語言的Python,也僅僅只有700萬的開發人員。
Excel是全世界最流行的程式語言。對,你沒看錯,自從微軟引入了LAMBDA定義函式後,Excel已經可以實現程式語言的演算法,因此它是具備圖靈完備性的,和JavaScript、Java、Python一樣。
雖然Excel對小規模資料場景來說是剛需利器,但它面對大資料時就會有些力不從心。
我們知道一張Excel表最多能顯示1048576行和16384列,處理一張幾十萬行的表可能就會有些卡頓,當然你可以使用VBA進行資料處理,也可以使用Python來操作Excel。
這就是本文要講到的主題,Python的第三方庫-xlwings,它作為Python和Excel的互動工具,讓你可以輕鬆地透過VBA來呼叫Python指令碼,實現複雜的資料分析。
比如說自動匯入資料:
或者隨機匹配文字:
一、為什麼將Python與Excel VBA整合?
VBA作為Excel內建的宏語言,幾乎可以做任何事情,包括自動化、資料處理、分析建模等等,那為什麼要用Python來整合Excel VBA呢?主要有以下三點理由:
如果你對VBA不算精通,你可以直接使用Python編寫分析函式用於Excel運算,而無需使用VBA;
Python相比VBA執行速度更快,且程式碼編寫更簡潔靈活;
Python中有眾多優秀的第三方庫,隨用隨取,可以節省大量程式碼時間;
對於Python愛好者來說,pandas、numpy等資料科學庫用起來可能已經非常熟悉,如果能將它們用於Excel資料分析中,那將是如虎添翼。
二、為什麼使用xlwings?
Python中有很多庫可以操作Excel,像xlsxwriter、openpyxl、pandas、xlwings等。
但相比其他庫,xlwings效能綜合來看幾乎是最優秀的,而且xlwings可以實現透過Excel宏呼叫Python程式碼。
圖片來自早起Python
安裝xlwings非常簡單,在命令列透過pip實現快速安裝:
安裝好xlwings後,接下來需要安裝xlwings的 Excel整合外掛,安裝之前需要關閉所有 Excel 應用,不然會報錯。
同樣在命令列輸入以下命令:
出現下面提示代表整合外掛安裝成功。
xlwings和外掛都安裝好後,這時候開啟Excel,會發現工具欄出現一個xlwings的選單框,代表xlwings外掛安裝成功,它起到一個橋樑的作用,為VBA呼叫Python指令碼牽線搭橋。
另外,如果你的選單欄還沒有顯示“開發工具”,那需要把“開發工具”新增到功能區,因為我們要用到宏。
步驟很簡單:
1、在“檔案”選項卡上,轉到“自定義>選項”。
2、在“自定義功能區”和“主選項卡”下,選中“開發工具”複選框。
選單欄顯示開發工具,就可以開始使用宏。
如果你還不知道什麼是宏,可以暫且把它理解成實現自動化及批次處理的工具。
到這一步,前期的準備工作就完成了,接下來就是實戰!
三、玩轉xlwings
要想在excel中呼叫python指令碼,需要寫VBA程式來實現,但對於不懂VBA的小夥伴來說就是個麻煩事。
但xlwings解決了這個問題,不需要你寫VBA程式碼就能直接在excel中呼叫python指令碼,並將結果輸出到excel表中。
xlwings會幫助你建立和兩個檔案,在檔案裡寫python程式碼,在檔案裡點選執行,就完成了excel與python的互動。
怎麼建立這兩個檔案呢?非常簡單,直接在命令列輸入以下程式碼即可:
這裡的可以自定義,是建立後文件的名字。
如果你想把檔案建立到指定資料夾裡,需要提前將命令列導航到指定目錄。
建立好後,在指定資料夾裡會出現兩個檔案,就是之前說的和檔案。
我們開啟檔案,這是一個excel宏檔案,xlwings已經提前幫你寫好了呼叫Python的VBA程式碼。
按快捷鍵,就能調出VBA編輯器。
裡面這串程式碼主要執行兩個步驟:
1、在檔案相同位置查詢相同名稱的檔案
2、呼叫腳本里的函式
我們先來看一個簡單的例子,自動在excel表裡輸入
第一步:我們把檔案裡的程式碼改成以下形式。
然後在檔案中建立一個按鈕,並設定預設的宏,變成一個觸發按鈕。
設定好觸發按鈕後,我們直接點選它,就會發現第一行出現了。
同樣的,我們可以把鳶尾花資料集自動匯入到excel中,只需要在。py檔案裡改動程式碼即可,程式碼如下:
好了,這就是在excel中呼叫Python指令碼的全過程,你可以試試其他有趣的玩法,比如實現機器學習演算法、文字清洗、資料匹配、自動化報告等等。
Excel+Python,簡直法力無邊。
參考medium文章