首頁 > 後端開發 > Python教學 > 如何在Excel中呼叫Python腳本,實現資料自動化處理!

如何在Excel中呼叫Python腳本,實現資料自動化處理!

PHPz
發布: 2023-04-13 09:19:06
轉載
2979 人瀏覽過

如何在Excel中呼叫Python腳本,實現資料自動化處理!

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

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

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

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

這就是本文要講到的主題,Python的第三方函式庫-xlwings,它作為Python和Excel的互動工具,讓你可以輕鬆地透過VBA來呼叫Python腳本,實現複雜的資料分析。

比如說自動導入資料:如何在Excel中呼叫Python腳本,實現資料自動化處理!

或隨機比對文字:如何在Excel中呼叫Python腳本,實現資料自動化處理!

一、為什麼要將Python與Excel VBA整合?

VBA作為Excel內建的巨集語言,幾乎可以做任何事情,包括自動化、資料處理、分析建模等等,那為什麼要用Python來整合Excel VBA呢?主要有以下三點理由:


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

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

    1. Python中有眾多優秀的第三方函式庫,隨用隨取,可以節省大量程式碼時間;

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

    二、為什麼要使用xlwings?

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

    但比起其他函式庫,xlwings效能綜合來看幾乎是最優秀的,而且xlwings可以實作透過Excel巨集呼叫Python程式碼。

    如何在Excel中呼叫Python腳本,實現資料自動化處理!圖片來自早起Python如何在Excel中呼叫Python腳本,實現資料自動化處理!

    xlwings的入門使用這裡不多做講解。

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

    pip install python
    
    登入後複製

    安裝好xlwings後,接下來需要安裝xlwings的Excel整合插件,安裝前需要關閉所有Excel 應用,不然會報錯。

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

    xlwings addin install
    
    登入後複製

    出現下面提示代表整合外掛程式安裝成功。 如何在Excel中呼叫Python腳本,實現資料自動化處理!

    xlwings和插件都安裝好後,這時候打開Excel,會發現工具列出現一個xlwings的選單框,代表xlwings插件安裝成功,它起到一個橋樑的作用,為VBA調用Python腳本牽線搭橋。

    如何在Excel中呼叫Python腳本,實現資料自動化處理!

    另外,如果你的功能表列還沒有顯示“開發工具”,那需要把“開發工具”加入到功能區,因為我們要用到巨集。

    步驟很簡單:

    1、在"檔案"標籤上,轉到"自訂>選項"。

    2、在「自訂功能區」和「主選項卡」下,選取「開發工具」複選框。

    如何在Excel中呼叫Python腳本,實現資料自動化處理!

    選單列顯示開發工具,就可以開始使用巨集。

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

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

    三、玩转xlwings

    要想在excel中调用python脚本,需要写VBA程序来实现,但对于不懂VBA的小伙伴来说就是个麻烦事。

    但xlwings解决了这个问题,不需要你写VBA代码就能直接在excel中调用python脚本,并将结果输出到excel表中。

    xlwings会帮助你创建​​.xlsm​​​和​​.py​​​两个文件,在​​.py​​​文件里写python代码,在​​.xlsm​​文件里点击执行,就完成了excel与python的交互。

    怎么创建这两个文件呢?非常简单,直接在命令行输入以下代码即可:

    xlwings quickstart ProjectName
    
    登入後複製

    这里的​​ProjectName​​可以自定义,是创建后文件的名字。

    如何在Excel中呼叫Python腳本,實現資料自動化處理!

    如果你想把文件创建到指定文件夹里,需要提前将命令行导航到指定目录。

    创建好后,在指定文件夹里会出现两个文件,就是之前说的​​.xlsm​​​和​​.py​​文件。

    如何在Excel中呼叫Python腳本,實現資料自動化處理!

    我们打开​​.xlsm​​文件,这是一个excel宏文件,xlwings已经提前帮你写好了调用Python的VBA代码。

    按快捷键​​Alt + F11​​​,就能调出VBA编辑器。

    如何在Excel中呼叫Python腳本,實現資料自動化處理!


    Sub SampleCall()<br>mymodule = Left(ThisWorkbook.Name, (InStrRev(ThisWorkbook.Name, ".", -1, vbTextCompare) - 1))<br>RunPython "import " & mymodule & ";" & mymodule & ".main()"<br>End Sub<br><br>
    登入後複製

    里面这串代码主要执行两个步骤:

    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​​中创建一个按钮,并设置默认的宏,变成一个触发按钮。

    如何在Excel中呼叫Python腳本,實現資料自動化處理!如何在Excel中呼叫Python腳本,實現資料自動化處理!如何在Excel中呼叫Python腳本,實現資料自動化處理!

    设置好触发按钮后,我们直接点击它,就会发现第一行出现了​​['a','b','c','d','e']​​。

    如何在Excel中呼叫Python腳本,實現資料自動化處理!

    同样的,我们可以把鸢尾花数据集自动导入到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脚本的全过程,你可以试试其他有趣的玩法,比如实现机器学习算法、文本清洗、数据匹配、自动化报告等等。

    Excel+Python,简直法力无边。

    参考medium文章

    以上是如何在Excel中呼叫Python腳本,實現資料自動化處理!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    相關標籤:
    來源:51cto.com
    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板