Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!

Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!

PHPz
PHPzke hadapan
2023-04-13 09:19:062913semak imbas

Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!

Bercakap tentang Excel, sudah pasti ia adalah raja dalam bidang pemprosesan data Walaupun sudah lebih 30 tahun, masih terdapat 750 juta pengguna setia di seluruh dunia, dan sebagai bahasa selebriti Internet Python hanya mempunyai 7 juta pembangun.

Excel ialah bahasa pengaturcaraan paling popular di dunia. Ya, anda membacanya dengan betul Sejak Microsoft memperkenalkan fungsi definisi LAMBDA, Excel telah dapat melaksanakan algoritma dalam bahasa pengaturcaraan, jadi Turing lengkap, sama seperti JavaScript, Java dan Python.

Walaupun Excel ialah alat yang sangat diperlukan untuk senario data berskala kecil, ia agak tidak mencukupi apabila menghadapi data besar.

Kami tahu bahawa jadual Excel boleh memaparkan sehingga 1,048,576 baris dan 16,384 lajur Memproses jadual dengan ratusan ribu baris mungkin menyebabkan sedikit ketinggalan, anda boleh menggunakan VBA untuk pemprosesan data gunakan Python untuk mengendalikan Excel.

Ini ialah topik artikel ini, library-xlwings pihak ketiga Python, yang berfungsi sebagai alat interaktif antara Python dan Excel, membolehkan anda memanggil skrip Python dengan mudah melalui VBA untuk mencapai analisis data yang kompleks.

Sebagai contoh, import data secara automatik: Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!

atau padankan teks secara rawak: Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!

1. Mengapa menyepadukan Python dengan Excel VBA?

VBA, sebagai bahasa makro terbina dalam Excel, boleh melakukan hampir semua perkara, termasuk automasi, pemprosesan data, pemodelan analitik, dll. Jadi mengapa menggunakan Python untuk menyepadukan Excel VBA? Terdapat tiga sebab utama:


  1. Jika anda tidak mahir dalam VBA, anda boleh terus menggunakan Python untuk menulis fungsi analisis untuk operasi Excel, dan Tidak perlu menggunakan VBA;

    1. Python berjalan lebih pantas daripada VBA, dan penulisan kod lebih ringkas dan fleksibel;

  • Terdapat banyak perpustakaan pihak ketiga yang sangat baik dalam Python, yang boleh digunakan pada bila-bila masa, yang boleh menjimatkan banyak masa pengekodan
    1. Untuk pencinta Python Anda mungkin sudah biasa dengan perpustakaan sains data seperti panda dan numpy Jika anda boleh menggunakannya untuk analisis data Excel, ia akan menjadi lebih hebat.

    2. Kenapa guna xlwings?

    Terdapat banyak perpustakaan dalam Python yang boleh mengendalikan Excel, seperti xlsxwriter, openpyxl, panda, xlwings, dll.

    Tetapi berbanding dengan perpustakaan lain, xlwings mempunyai prestasi keseluruhan yang hampir terbaik dan xlwings boleh memanggil kod Python melalui makro Excel.

    Gambar berasal dari Early Python

    Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!Penggunaan pengenalan xlwings tidak akan diterangkan di sini. Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!

    Memasang xlwings adalah sangat mudah Pemasangan pantas boleh dicapai melalui pip pada baris arahan:

    Selepas memasang xlwings, anda perlu memasang pemalam penyepaduan Excel xlwings. Sebelum pemasangan, anda perlu menutup semua Excel Apply, jika tidak ralat akan dilaporkan.

    pip install python
    
    Masukkan juga arahan berikut pada baris arahan:

    Gesaan berikut menunjukkan bahawa pemalam bersepadu berjaya dipasang.

    xlwings addin install
    

    Selepas xlwings dan pemalam dipasang, buka Excel pada masa ini dan anda akan menemui kotak menu xlwings muncul pada bar alat, yang bermaksud bahawa pemalam xlwings berjaya dipasang berfungsi sebagai jambatan untuk panggilan VBA skrip Python untuk mencari jodoh. Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!

    Selain itu, jika bar menu anda belum lagi memaparkan "Alat Pembangunan", anda perlu menambah "Alat Pembangunan" pada reben kerana kita perlu menggunakan makro. Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!

    Langkahnya mudah:

    1 Pada tab "Fail", pergi ke "Sesuaikan > Pilihan".

    2. Di bawah "Sesuaikan Reben" dan "Tab Utama", pilih kotak semak "Alat Pembangunan".

    Bar menu memaparkan alat pembangunan dan anda boleh mula menggunakan makro. Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!

    Jika anda masih tidak tahu apa itu makro, anda boleh memahaminya buat sementara waktu sebagai alat untuk automasi dan pemprosesan kelompok.

    Pada ketika ini, kerja penyediaan awal telah selesai, dan langkah seterusnya adalah pertempuran sebenar!

    三、玩转xlwings

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

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

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

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

    xlwings quickstart ProjectName
    

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

    Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!

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

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

    Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!

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

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

    Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!


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

    Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!

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

    Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!

    同样的,我们可以把鸢尾花数据集自动导入到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()
    
    
    

    Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!

    好了,这就是在excel中调用Python脚本的全过程,你可以试试其他有趣的玩法,比如实现机器学习算法、文本清洗、数据匹配、自动化报告等等。

    Excel+Python,简直法力无边。

    参考medium文章

    Atas ialah kandungan terperinci Bagaimana untuk memanggil skrip Python dalam Excel untuk mengautomasikan pemprosesan data!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam