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:
atau padankan teks secara rawak:
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:
2. Kenapa guna xlwings?
Gambar berasal dari Early Python
Penggunaan pengenalan xlwings tidak akan diterangkan di sini.
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
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.
Selain itu, jika bar menu anda belum lagi memaparkan "Alat Pembangunan", anda perlu menambah "Alat Pembangunan" pada reben kerana kita perlu menggunakan makro.
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.
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!要想在excel中调用python脚本,需要写VBA程序来实现,但对于不懂VBA的小伙伴来说就是个麻烦事。
但xlwings解决了这个问题,不需要你写VBA代码就能直接在excel中调用python脚本,并将结果输出到excel表中。
xlwings会帮助你创建.xlsm
和.py
两个文件,在.py
文件里写python代码,在.xlsm
文件里点击执行,就完成了excel与python的交互。
怎么创建这两个文件呢?非常简单,直接在命令行输入以下代码即可:
xlwings quickstart ProjectName
这里的ProjectName
可以自定义,是创建后文件的名字。
如果你想把文件创建到指定文件夹里,需要提前将命令行导航到指定目录。
创建好后,在指定文件夹里会出现两个文件,就是之前说的.xlsm
和.py
文件。
我们打开.xlsm
文件,这是一个excel宏文件,xlwings已经提前帮你写好了调用Python的VBA代码。
按快捷键Alt + F11
,就能调出VBA编辑器。
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
中创建一个按钮,并设置默认的宏,变成一个触发按钮。
设置好触发按钮后,我们直接点击它,就会发现第一行出现了['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文章
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!