<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何在Excel中調用Python腳本,實現數據自動化處理

          共 3413字,需瀏覽 7分鐘

           ·

          2022-02-23 12:34


          二條:有了這款Python神器,新手也會調試代碼!
          三條:一行代碼簡化Python異常信息:錯誤清晰指出,排版簡潔美觀!

          ↑?關注 + 星標?,每天學Python新技能

          后臺回復【大禮包】送你Python自學大禮包

          來自公眾號:Python大數據分析

          這次我們會介紹如何使用xlwings將Python和Excel兩大數據工具進行集成,更便捷地處理日常工作。

          說起Excel,那絕對是數據處理領域王者般的存在,盡管已經誕生三十多年了,現在全球仍有7.5億忠實用戶,而作為網紅語言的Python,也僅僅只有700萬的開發(fā)人員。

          Excel是全世界最流行的編程語言。對,你沒看錯,自從微軟引入了LAMBDA定義函數后,Excel已經可以實現編程語言的算法,因此它是具備圖靈完備性的,和JavaScript、Java、Python一樣。

          雖然Excel對小規(guī)模數據場景來說是剛需利器,但它面對大數據時就會有些力不從心。

          我們知道一張Excel表最多能顯示1048576行和16384列,處理一張幾十萬行的表可能就會有些卡頓,當然你可以使用VBA進行數據處理,也可以使用Python來操作Excel。

          這就是本文要講到的主題,Python的第三方庫-xlwings,它作為Python和Excel的交互工具,讓你可以輕松地通過VBA來調用Python腳本,實現復雜的數據分析。

          比如說自動導入數據:

          或者隨機匹配文本:

          一、為什么將Python與Excel VBA集成?

          VBA作為Excel內置的宏語言,幾乎可以做任何事情,包括自動化、數據處理、分析建模等等,那為什么要用Python來集成Excel VBA呢?主要有以下三點理由:


            1. 如果你對VBA不算精通,你可以直接使用Python編寫分析函數用于Excel運算,而無需使用VBA;

            1. Python相比VBA運行速度更快,且代碼編寫更簡潔靈活;

            1. Python中有眾多優(yōu)秀的第三方庫,隨用隨取,可以節(jié)省大量代碼時間;

          對于Python愛好者來說,pandas、numpy等數據科學庫用起來可能已經非常熟悉,如果能將它們用于Excel數據分析中,那將是如虎添翼。

          二、為什么使用xlwings?

          Python中有很多庫可以操作Excel,像xlsxwriter、openpyxl、pandas、xlwings等。

          但相比其他庫,xlwings性能綜合來看幾乎是最優(yōu)秀的,而且xlwings可以實現通過Excel宏調用Python代碼。

          圖片來自早起Python

          xlwings的入門使用這里不多做講解,如果大家還不了解,先看看我之前寫的入門介紹:xlwings,讓excel飛起來!

          安裝xlwings非常簡單,在命令行通過pip實現快速安裝:

          pip?install?python

          安裝好xlwings后,接下來需要安裝xlwings的 Excel集成插件,安裝之前需要關閉所有 Excel 應用,不然會報錯。

          同樣在命令行輸入以下命令:

          xlwings?addin?install

          出現下面提示代表集成插件安裝成功。

          xlwings和插件都安裝好后,這時候打開Excel,會發(fā)現工具欄出現一個xlwings的菜單框,代表xlwings插件安裝成功,它起到一個橋梁的作用,為VBA調用Python腳本牽線搭橋。

          另外,如果你的菜單欄還沒有顯示“開發(fā)工具”,那需要把“開發(fā)工具”添加到功能區(qū),因為我們要用到宏。

          步驟很簡單:

          1、在"文件"選項卡上,轉到"自定義>選項"。

          2、在“自定義功能區(qū)”和“主選項卡”下,選中“開發(fā)工具”復選框。

          菜單欄顯示開發(fā)工具,就可以開始使用宏。

          如果你還不知道什么是宏,可以暫且把它理解成實現自動化及批量處理的工具。

          到這一步,前期的準備工作就完成了,接下來就是實戰(zhàn)!

          三、玩轉xlwings

          要想在excel中調用python腳本,需要寫VBA程序來實現,但對于不懂VBA的小伙伴來說就是個麻煩事。

          但xlwings解決了這個問題,不需要你寫VBA代碼就能直接在excel中調用python腳本,并將結果輸出到excel表中。

          xlwings會幫助你創(chuàng)建.xlsm.py兩個文件,在.py文件里寫python代碼,在.xlsm文件里點擊執(zhí)行,就完成了excel與python的交互。

          怎么創(chuàng)建這兩個文件呢?非常簡單,直接在命令行輸入以下代碼即可:

          xlwings?quickstart?ProjectName

          這里的ProjectName可以自定義,是創(chuàng)建后文件的名字。

          如果你想把文件創(chuàng)建到指定文件夾里,需要提前將命令行導航到指定目錄。

          創(chuàng)建好后,在指定文件夾里會出現兩個文件,就是之前說的.xlsm.py文件。

          我們打開.xlsm文件,這是一個excel宏文件,xlwings已經提前幫你寫好了調用Python的VBA代碼。

          按快捷鍵Alt + F11,就能調出VBA編輯器。

          Sub SampleCall()    mymodule = Left(ThisWorkbook.Name, (InStrRev(ThisWorkbook.Name, ".", -1, vbTextCompare) - 1))    RunPython "import " & mymodule & ";" & mymodule & ".main()"End Sub

          里面這串代碼主要執(zhí)行兩個步驟:

          1、在.xlsm文件相同位置查找相同名稱的.py文件?

          2、調用.py腳本里的main()函數

          我們先來看一個簡單的例子,自動在excel表里輸入['a','b','c','d','e']

          第一步:我們把.py文件里的代碼改成以下形式。

          import?xlwings?as?xw
          import?pandas?as?pd


          def?main():
          ????wb?=?xw.Book.caller()
          ????values?=?['a','b','c','d','e']
          ????wb.sheets[0].range('A1').value?=?values


          @xw.func
          def?hello(name):
          ????return?f"Hello?{name}!"


          if?__name__?==?"__main__":
          ????xw.Book("PythonExcelTest.xlsm").set_mock_caller()
          ????main()

          然后在.xlsm文件sheet1中創(chuàng)建一個按鈕,并設置默認的宏,變成一個觸發(fā)按鈕。

          設置好觸發(fā)按鈕后,我們直接點擊它,就會發(fā)現第一行出現了['a','b','c','d','e']

          同樣的,我們可以把鳶尾花數據集自動導入到excel中,只需要在.py文件里改動代碼即可,代碼如下:

          import?xlwings?as?xw
          import?pandas?as?pd

          def?main():
          ????wb?=?xw.Book.caller()
          ????df?=?pd.read_csv(r"E:\\test\\PythonExcelTest\\iris.csv")
          ????df['total_length']?=??df['sepal_length']?+?df['petal_length']
          ????wb.sheets[0].range('A1').value?=?df


          @xw.func
          def?hello(name):
          ????return?f"Hello?{name}!"


          if?__name__?==?"__main__":
          ????xw.Book("PythonExcelTest.xlsm").set_mock_caller()
          ????main()

          好了,這就是在excel中調用Python腳本的全過程,你可以試試其他有趣的玩法,比如實現機器學習算法、文本清洗、數據匹配、自動化報告等等。

          Excel+Python,簡直法力無邊。

          參考medium文章


          推薦閱讀

          1. Python 文本終端 GUI 框架,太酷了

          2. 5個方便好用的Python自動化腳本

          3. 利用Conda嘗鮮Python 3.10


          您看此文用???分??秒,轉發(fā)只需1秒哦~

          瀏覽 38
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  97久久人国产精品婷婷 | 四虎国产精品成人久久 | 国产精品久久久久久吹潮 | 人妻无码中文字幕蜜桃 | 尻屄视频在线免费看 |