Bu yazımızda python ile bir Excel dosyasından veri okuma
işlemi için openpyxl kütüphanesinin nasıl kullanıldığını anlatacağım. Openpyxl paketi python kurulumu ile gelmediği
için ayrıca yüklenmesi gerekiyor.
Kurulum için komut satırında python’nun kurulu olduğu yerde ‘scripts’
klasörüne gidip aşağıdaki komutu yazarak ‘openpyxl’ kütüphanesini ekliyoruz.

Paket kurulumu tamamlandıktan sonra projemizi açarak openpyxl kütüphanesini aşağıdaki gibi ekliyoruz. Paketin yüklenmesinde bir problem olmuşsa “NameError: name 'openpyxl' is not defined” gibi bir hata alacaksınız. Paketi başarıyla kurduğunuzu varsayarak yazımıza devam ediyoruz.
import openpyxl
Elimizde script dosyamızla aynı klasör altında
‘ebolaData.xlsx’ isimli bir Excel dosyamız olsun. (openpyxl xls formatındaki dosyaları okuyamıyor böyle bir
dosyanız varsa öncelikle xlsx formatına çevirmeniz gerekiyor) Bu
dosyanın tamamı bir workbook olarak isimlendirilip veriler bu workbook
içerisinde yer alan sheet’ler içerisindeki hücrelerde tutulmaktadır. İlk olarak
workbook işlemleri için ‘wb’ değişkenini tanımlayıp dosya yolunu bu değişkene
gösteriyoruz.
wb = openpyxl.load_workbook('ebolaData.xlsx')
Daha sonra okumak istediğimiz veriler hangi sayfa içerisinde ise o sayfayı workbook içerisinden okuyup bir değişkene atıyoruz. Bu aşamada çalışılacak sayfayı göstermenin birden fazla yolu var. Aşağıda farklı kullanımlarını gösterdim.
sheet = wb.get_sheet_by_name('Sheet3')
Yukarıdaki kod ile Sheet3’ü
okuyoruz(okuyacağınız sayfaya ait isim Excel dosyasının sağ alt kısmında
yazmaktadır).
sheet = wb.active
Yukarıdaki kod ile workbook içerisindeki aktif sayfa
seçilmektedir.
Çalışacağımız sayfayı belirledikten sonra sıra geldi
herhangi bir hücreyi bu sayfadan okumaya. Excel sayfalarında satırlar
sayılarla, sütunlar ise harflerle isimlendirilmiştir. Verinin bulunduğu Sütuna
ait harfi, satıra ait sayıyla birleştirerek hücreye ait adres belirlenir.
Örneğin d sütununun 5 nolu satırındaki hücrenin adresi ‘D5’ olmaktadır. Bu adresteki veri aşağıdaki gibi
okunabilir.
cell = sheet['D5'].value
print cell
Yukarıdaki kod için ekran çıktısı :
VP35_EBOZM
Hücre adresi Excel formatında verilebileceği gibi
tüm sayfayı bir matris gibi düşünüp satır ve sütun numarasını sayısal olarak
belirtip veriye erişmek mümkündür. ‘D5’ hücresi için satır numarası 5, D’ye
karşılık gelen sütün numarası 4 olacaktır. Bu durumda ‘D5’ hücresi aşağıdaki
şekilde de okunabilir.
cell =
sheet.cell(row = 5,column = 4).value
Şimdi de herhangi bir sütundaki verilerin tümünü bir
listeye nasıl aktaracağımızı görelim. Sayfamızdaki F sütununda yer alan
verileri hList değişkenine aşağıdaki gibi aktarıp ekrana yazdırabiliriz.
hList = []
for cell in sheet['F']:
hList.append(str(cell.value))
print hList
Son olarak aynı anda iki sütunu okuyup ayrı listeler halinde döndüren fonksiyonu yazalım. Python iki diziyi aynı anda okumaya izin vermektedir. Dolayısıyla iki listeyi tek döngü içerisinde okuyabiliriz. Okumak istediğimiz sütünları fonksiyonumuza parametre olarak verip, fonksiyonun iki ayrı liste döndürmesini istiyoruz. Fonksiyona ait kodlar aşağıdaki gibi olacaktır.
``` def select_hostPathogen_List(patCol,hostCol):
pList = [] # pathojen protein list
hList =[] # human protin list
for pp, hp in zip(patCol,hostCol):
pList.append(str(pp.value))
hList.append(str(hp.value))
return
pList,hList
```
Yukarıdaki fonksiyonu ‘D’ ve ‘F’ sütunlarının okunması için aşağıdaki gibi kullanabiliriz.
P,H = select_hostPathogen_List(sheet['D'], sheet['F'])
P, H listelerini ekrana yazdırma :
for i,j in zip(P,H):
print
i + " : " + j
Bu günkü yazımız bu kadar işinize yarayacağını umar,
iyi çalışmalar dilerim.
Bütün satır ve sütunları nasıl okuyabiliriz peki?
YanıtlaSilBütün satır ve sütunları nasıl okuyabiliriz peki?
YanıtlaSil