目錄
一、為什麼要將Python與Excel VBA整合? " >一、為什麼要將Python與Excel VBA整合?
二、為什麼要使用xlwings? " >二、為什麼要使用xlwings?
三、玩转xlwings" >三、玩转xlwings
首頁 後端開發 Python教學 如何在Excel中呼叫Python腳本,實現資料自動化處理!

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

Apr 13, 2023 am 09:19 AM
excel python

如何在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中文網其他相關文章!

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    熱門話題

    Java教學
    1659
    14
    CakePHP 教程
    1415
    52
    Laravel 教程
    1310
    25
    PHP教程
    1258
    29
    C# 教程
    1232
    24
    PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

    PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

    在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

    PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

    PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

    PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

    Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

    Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

    sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

    在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

    vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

    在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

    visual studio code 可以用於 python 嗎 visual studio code 可以用於 python 嗎 Apr 15, 2025 pm 08:18 PM

    VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

    notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

    在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

    See all articles