Excel'i geliştirmek ve karmaşık verileri işlemenin getirdiği acıyı azaltmak için Python nasıl kullanılır?

Tam metin 3149 Kelimeler, tahmini öğrenme süresi 9 dakika

Kaynak: Pexels

Excel hem bir nimet hem de bir lanettir.

Yeterince küçük veri ve yeterince basit işlemler söz konusu olduğunda, Excel kraldır. Ancak kendinizi bu alanlardan dışarı çıkmaya çalışırken bulduğunuzda bu bir acıya dönüşür.

Elbette bu sorunları çözmek için ExcelVBA'yı kullanabilirsiniz, ancak 2020'de neyse ki bunu yapmak zorunda değilsiniz!

Excel ve Python'u birbirine entegre etmenin bir yolu varsa, Excel ... kanatlara sahip olacaktır!

Şimdi var. Xlwings adlı bir python kitaplığı, kullanıcıların python komut dosyalarını VBA aracılığıyla çağırmasına ve ikisi arasında veri aktarmasına olanak tanır.

Python'u neden ExcelVBA ile entegre etmelisiniz?

Aslında, kullanıcılar VBA'da her şeyi yapabilir. Öyleyse, neden Python kullanalım? Pek çok neden var.

1. VBA'yı öğrenmek zorunda kalmadan Excel'de özel işlevler oluşturabilirsiniz (okuyucu henüz bilmiyorsa)

2. Kullanıcı Excel'den çok memnun

3. Python kullanmak veri manipülasyonunu önemli ölçüde hızlandırabilir

4. Python'da hemen hemen her şey (makine öğrenimi, veri bilimi vb.) İçin kitaplıklar vardır.

5. Çünkü yapabilirsiniz! ! !

Xlwings kullanıma hazır

Kullanmak istediğiniz herhangi bir yeni kütüphane gibi yapmanız gereken ilk şey onu kurmaktır. Bunu yapmak çok kolay; bu iki komutla yakında hazır olacak. Öyleyse, komutu terminale girin:

xlwings pipinstall

Kitaplığı indirip kurduktan sonra, Excel entegrasyon bölümünü kurmanız gerekir. Tüm Excel örneklerinin ve tüm terminal türlerinin kapalı olduğundan emin olun:

xlwings eklenti yükleme

Herhangi bir hatayla karşılaşılmadığını varsayarsak, devam edebilmelisiniz. Ancak, Win10 Excel2016'da insanlar genellikle aşağıdaki hataları görür:

xlwings0.17.0 Böyle bir dosya veya dizin yok: 'C: \ Users \ costa \ AppData \ Roaming \ Microsoft \ Excel \ XLSTART \ xlwings.xlam'

Yukarıdaki hatayla karşılaşacak kadar şanslıysanız, tek yapmanız gereken eksik dizini oluşturmaktır. Bu, mkdir komutu kullanılarak kolayca yapılabilir. Yazar söz konusu olduğunda, yazar şunları yaptı:

mkdirC: \ Kullanıcılar \ costa \ AppData \ Roaming \ Microsoft \ Excel \ XLSTART

Excel ve python kitaplığının entegrasyonunun başarıyla kurulduğunu varsayarsak, excel'in temel farkını hemen fark edebilirsiniz:

Xlwings için kullanıcı tanımlı işlevleri etkinleştirin

Öncelikle, Excel eklentisini yüklemeniz gerekir. Alt, L, H'ye tıklayın ve ardından eklentiyi yüklemek için yukarıdaki dizine gidin. İşiniz bittiğinde, aşağıdakileri görebilmelisiniz:

Son olarak, VBA mühendislik nesne modeline güvenilir erişimi etkinleştirmeniz gerekir. "Dosya" ya gidebilirsiniz > Seçenekler > Güven merkezi > Güven Merkezi ayarları > Makro Ayarları "bunu yapmak için:

Xlwings ile başlarken

Excel'den Python'a (Python'dan Excel'e) iki ana yol vardır. Birincisi, Python komut dosyalarını doğrudan VBA'dan çağırmak, diğeri ise kullanıcı tanımlı işlevleri kullanmaktır. Her ikisine de hızlıca bakın.

Herhangi bir karışıklığı önlemek için, her seferinde doğru bir şekilde kurulabilir, xlwings, kullanıma hazır bir Excel elektronik tablosu oluşturma işlevi sağlar. Aşağıdaki bu işlevi kullanalım. Terminali kullanarak favori dizine gidin ve şunu yazın:

xlwingsquickstart Proje Adı

Buna MyFirstPythonXL deyin. Yukarıdaki komut, önceden gezinilmiş dizinde, bir Excel çalışma sayfası ve bir python dosyası içeren yeni bir klasör oluşturacaktır.

.Xlsm dosyasını açtığınızda, xlwings.conf adında yeni bir Excel çalışma sayfasını hemen fark edebilirsiniz. Varsayılan xlwings ayarlarını geçersiz kılmak istiyorsanız, bu çalışma sayfasını yeniden adlandırın ve başlangıç alt çizgisini silin. Böylelikle hazırlık çalışmaları tamamlanmış olur, xlwings kullanmaya başlayalım.

VBA'dan Python'a

Kodlamaya başlamadan önce hepimizin aynı sayfada olduğundan emin olun. ExcelVBA düzenleyicisini açmak için Alt + F11 tuşlarına basın. Bu, aşağıdaki ekrana dönecektir:

Xlwings ile VBA editörü

Burada dikkat edilmesi gereken en önemli şey, bu kodun aşağıdakileri yapacağıdır:

1. Python komut dosyasını elektronik tablo ile aynı konumda bulun

2. Elektronik tablo ile aynı ada sahip Python komut dosyasını bulun (ancak uzantısı .py'dir)

3. Bir Python betiğinden "main ()" işlevini çağırın

Eve daha yakından bakalım, birkaç kullanım örneğine göz atalım.

Örnek 1: Excel dışında çalışın ve çıktıyı geri verin

Bu örnekte, Excel dışında işlemlerin nasıl gerçekleştirileceğini göreceksiniz, ancak ardından sonuçları elektronik tabloya döndüreceksiniz. Bunun sonsuz sayıda kullanım durumu olabilir.

CSV dosyasından veri alın, verileri değiştirin ve ardından çıktıyı Excel'e iletin. Bu işlem çok basit:

İlk olarak, VBA kodu:

Varsayılan ayarlardan tamamen değişmeden kalır.

Ardından, Python kodu:

xwimport pandaları olarak importxlwings pddef main (): wb = xw.Book.caller () df = pd.read_csv (r'C: \ temp \ TestData.csv ') df = df + df wb.sheets.range (' A1 ') .value = df

Sonuçlar aşağıdaki gibidir:

Örnek 2: İşlemleri yürütmek için Excel girdisini kullanın

Bu örnekte, girdi Excel'den okunur, Python'da işlenir ve sonuç Excel'e geri aktarılır.

Daha spesifik olarak, şakaları bulabileceğiniz bir selamlama, bir isim ve bir dosya konumu okuyun. Ardından, Python betiği dosyadan rastgele bir satır çıkarır ve bir şaka döndürür.

İlk olarak, VBA kodu:

Varsayılan ayarlardan tamamen değişmeden kalır.

Ardından, Python kodu:

xwimport randomdef olarak importxlwings random_line (dosya): num için satır = next (dosya), numaralandırmada aline (afile, 2): if random.randrange (num): devam satırı = aline dönüş satırı'Function from: stackoverflowdef main (): wb = xw.Book.caller () listloc = str (wb.sheets.range ('B3']. değer) fhandle = open (listloc, kodlama = 'utf-8') wb.sheets.range ('A5') .value = wb.sheets.range ('B2']. değer + '' + wb.sheets.range ('B1'). değer + 'işte size bir şaka' wb.sheets.range ('A6') .value = random_line (fhandle)

Sonuç:

Xlwigs ile kullanıcı tanımlı işlevler

Python dosyasındaki kodu neredeyse aynı şekilde değiştirin. Bir şeyi Excel kullanıcı tanımlı bir işleve dönüştürmek için, işlevin bulunduğu satırdan önce yalnızca "@ xw.func" eklememiz gerekir:

Python kodu:

xw@xw.funcdef joke (x) olarak importxlwings: wb = xw.Book.caller () fhandle = open (r'C: \ Temp \ list.csv ') i için, numaralandırmada satır (fhandle): if i = = x: return (satır)

Sonuçlar:

Xiaoxin gibiyseniz ve VBA yerine Python kullanmayı tercih ediyorsanız, ancak aynı zamanda elektronik tablolar da kullanmanız gerekiyorsa, bu araç sizin için en iyi seçimdir.Ona güzel, küçük bir veritabanı olarak bakabilirsiniz.

Yorum Beğen Takip Et

Yapay zeka öğrenme ve geliştirmenin kuru mallarını paylaşalım

Yeniden yazdırıyorsanız, lütfen arka planda bir mesaj bırakın ve yeniden yazdırma şartnamelerine uyun

Bugünün Xinsheng | Kavun yiyen insanlar jüriyi kalabalık mı ediyor? Nanjing Üniversitesi doktora tezinin çevrimiçi savunması
önceki
"Kale Gecesi", "Minecraft" - pedofiller için bir avlanma yeri mi? Çocuğu kurtar
Sonraki
Bilim adamları "ekran zamanının" ötesine geçmeye hazır, hazır mısınız?
Tatiller, para, bedava faturalar ... tüketimi teşvik edecek gösterişli önlemler, ülke sizi oynamaya çağırıyor
Sıcak Koku Alanı | -2 + 8 kuvvetli rüzgar + yağmur! Jinan her yönden bir soğuk dalgayı başlatacak
Bir kadın maske takmadan merkez parka koştu ... Güvenlik görevlisini ısırdı ve polisi tekmeledi
ZTE satmaya devam ediyor! Büyük hissedar en son milyarlarca sevkiyat yapmak için blok işlem kullandı, bu sefer üç günde 1.8 milyar sevk etti
1 milyar pazarlık-avcılık A hissesinin devasa atışı: Kara borsası 10 milyar hisse senetlerini süpürür, birçok ülke tersine çevirir ve "teknik boğaya" girer
HUAWEI P40 Pro popüler renk eşleştirme öncelikli teslimat Wang Ziru × Jingdong mallarla canlı gösteri düzenledi
Daha güçlü soğuk hava Çin'i etkilemeye devam ediyor, Jiangnan ve Güney Çin'de kuvvetli yağış ve kuvvetli konveksiyon var
Taishan'da doğan 70 yaşındaki fotoğrafçı Liu Bozhi, Çinlilerin yarım asırlık geçmişini kaydediyor.
Hubei çalışanlarının işe dönmesi için ilk özel tren geldi ve parti sekreteri ve Foshan belediye başkanı, bir ekibi gece geç saatte istasyonu alması için yönlendirdi.
Şiddetli Soğukta "Buz Rüyası Yaratıcısı"
Sıradan olağandışı yaratın
To Top