Python ve Excel Kütüphaneleri
Eğer Python ile excel dosyaları okumak veya yazmak istiyorsanız doğru yerdesiniz. Çeşitli Python kütüphaneleri ile excel dosyaları üzerinde işlem yapmak çocuk oyuncağı.
Python ile Excel dosyaları okumak ve yazmak, anladığım kadarıyla merak edilen bir konu ve günlük Python kullanımında ihtiyaç duyulabilecek bir bilgi. Bu yüzden, üstünkörü de olsa, konuya giriş için küçük bir belge yazmak istedim. Python kullanarak Excel dosyalarıyla çalışmak için geliştirilmiş, benim bildiğim, birkaç tane kütüphane var. Bunlardan xlwt Excel'e yazmak, xlrd ise Excel'den okumak için hazırlanmış. Diğer bir kütüphane olan xlutils ise, bunlar arasında bir nevi tutkal görevi görerek, yardımcı fonksiyonlarla bu ikisini birbirine bağlıyor. Bu yazıda, xlrd kütüphanesinden kısaca bahsedip, diğer kütüphanelere de ileriki zamanlarda değinmek istiyorum.
Feragat:Aşağıda yazdıklarım çoğunlukla burada bulabileceğiniz belgenin tembel çevirisidir. Birebir çevirmedim, ama orada olanları aktarıyorum. Bu yazıyı eğer bir şekilde başka bir platformda aynen veya değiştirerek yeniden yayınlayacaksanız, ki yayınlayabilirsiniz, orjinal metine atıfta bulunmanız gerekir.
Kurulum
Yukarıda adı geçen paketlerin hepsine pypi üzerinden ulaşılabilir. Yani
eğer sisteminizde setuptools kuruluysa, ki değilse kurmalısınız,
easy_install paket_adi
komutuyla bunlardan herhangi
birini yükleyebilirsiniz. pip ile de aynı şekilde
pip install paket_adi
komutuyla yükleyebilirsiniz. Kök
dizinine yazma hakkı olmayanlar, --user anahtarıyla kurulumu ev
dizinlerine yapabilirler (pip veya easy_install farketmez.).
Zannediyorum çoğu gnu/linux dağıtımının resmi veya kullanıcı
depolarından da bu kütüphanelere ulaşılabilir. İsterseniz bu paketleri
teker teker kurabilirsiniz, ama benim tavsiyem xlutils paketinin
kurulması, xlutils ile birlikte gerekli xlrd ve xlwt paketleri, ayrıca
bazı diğer paketler de kurulmuş oluyor. Böylece, Python ile excel
dosyalarıyla çalışmak için gereken tüm kütüphaneleri tek bir komutla
yüklemiş oluyorsunuz.
Python ile Excel Dosyaları Okumak
Çalışma Kitabı Açmak
Çalışma kitabı açmak için, xlrd paketi ile gelen open_workbook
fonksiyonu kullanılıyor. Bu fonksiyona ilk argüman olarak dosya yolunu
verirseniz, o dosyayı okuyup, ilişkili bir xlrd.Book
sınıfı döndürüyor. Dolayısıyla bu dosyayla çalışmak için dönüş değerini
bir değişkene atamalısınız.
Çalışma Kitabında Gezinme
Bir çalışma kitabı açtıktan sonra, muhtemelen bu dosyanın içerisinde
gezinip bazı satır ve sütünlardan bilgi almak isteyeceksiniz. Bunun için
xlrd.Book
objesinin bazı metotlarından yararlanacağız,
aşağıdaki örneği inceleyelim.
Çalışma Kitabını İncelemek
open_book()
ile dönen xlrd.Book sınıfı bir çalışma
kitabıyla ilgili tüm bilgileri tutar. Bu sınıfın nsheets özelliği,
çalışma sayfalarının sayısını tutar. Bu sayıyı sheet_by_index
metoduyla birlikte kullanmak, çalışma sayfalarını almak için en sık
kullanılan yoldur.
sheet_names
metodu, çalışma sayfalarının adını döndürür.
Nasıl sheet_by_index metoduyla belli bir sıradaki çalışma sayfasını
alabiliyorsak, sheet_by_name metodunu kullanarak, belli bir isimdeki
çalışma sayfasını alabiliriz. Ayrıca, sheets
metodu da
tüm çalışma sayfalarının bir listesini döndürür.
Çalışma Sayfasını İncelemek
Yukarıda bahsedilen herhangi bir metot ile elde edeceğiniz
xlrd.sheet.Sheet
objesi, bir çalışma sayfasıyla ilgili
tüm bilgileri tutar. Bu objenin name
özelliği bu sayfanın
adını tutar. ncols
ve nrows
ise sırasıyla
bu sayfadaki sütun ve satır sayısına karşılık gelir.
|
sayfa = a.sheet_by_index(0)
|
|
for satir_no in range(sayfa.nrows):
|
|
for sutun_no in range(sayfa.ncols):
|
|
print sayfa.cell(satir_no, sutun_no).value
|
Sayfa İçeriğinin Topluca Alınması
Yukarıda üstünkörü bahsettiğim hücre hücre erişim dışında, bir gurup hücredeki bilgileri toplu halde de alabilirsiniz.
Sonuç Olarak
xlrd kütüphanesinin burada bahsetmediğim birkaç özelliği daha var, ama ben detaylara girmeden konuya giriş yapmış olmak istediğimden, sadece temel özelliklere değindim. İleriki zamanlarda,xlwt ve xlutils ile ilgili açıklamaları da blog'uma eklemek istiyorum, ama zaman ne getirecek bilemeyiz.