Xlsx dosya uzantısı Microsoft Office 2007 ürünü ile ortaya çıkmıştır. Xls uzantılı dosyalar BIFF (Binary Interchange File Format) formatındaydı Xlsx ise Office Open XML formatını kullanıyor. Microsoft'un bu format değişikliğinin altındaki en büyük nedenlerden biriside dosya boyutlarındaki farktır. Örneğin 65 bin satırlık bir Xls dosyası yaklaşık olarak 50MB yer kaplarken aynı dosya Xlsx olarak sadece 8MB yer kaplamakta. Dosya boyutundaki bu muazzam kazancın faturasıda Xlsx dosyalarının daha geç açılıp daha zor okunması olarak ortaya çıkıyor. Xlsx konusundaki kısa bilgilerimizden sonra asıl konuya dönmek istiyorum. Xlsx dosyalarının Python ile okunması, bunun için daha önceden hazırlanmış kütüphanelerden yararlanacağız. Kütüphanemizin adı openpyxl. Kütüphanemiz normal şartlarda gayet iyi çalışmakta fakat Xlsx dosyamızın içerisinde çok fazla veri varsa örneğin 50 bin satır yada 200 bin satır gibi, kütüphanenin çalışması stabil olmuyor ve bazı sorunlar yaşanabiliyor. Tam bu noktada imdadımıza kütüphanemizin optimized reader'ı yetişiyor. Optimized reader özelliği bizim gibi büyük veri içeren Xlsx dosyaları ile çalışmak isteyenler için geliştirilmiş. Örnek kodlarla optimized reader'ın kullanımına bir göz atalaım. Şöyle bir kurgumuz olsun 250 bin satırlık bir Xlsx dosyamız var ve biz bu dosyayı okuyup bir tablo yapmak istiyoruz. Öncelikle kütüphanemizi yükleyelim: [python] from openpyxl.reader.excel import load_workbook [/python] Xlsx dosyamızı okuyup içerigini array'e atalım: [python] table=[] #tablomuzun tutlacağı array. wb = load_workbook(filename = 'dosya_ismi.xlsx', use_iterators = True) #Dosyamızı yüklüyoruz use_iterators özelliğini true yaparak optimized reader'ı kullanmış oluyoruz. sheet = wb.get_active_sheet() #Dosyamızdaki aktif sheet'i alıyoruz. for row in sheet.iter_rows(): #Kütüphanedeki rows() fonksiyonu yerine itter_rows() fonksiyonunu kullanıyoruz. Bu fonksiyon sheet içindeki satırların listesini bize dönüyor. line=[] #satırların tutulacağı array. for cell in row: #Her bir satırdaki hücreleri geziyoruz. line.append(cell.internal_value) # burda value() fonksiyonu yerine internal_value() fonksiyonunu kullanıyoruz. table.append(line) #satırlarımı table array'imize ekliyoruz. [/python] Sonuç olarak table array'imizin içerisinde satırlarımızdaki hücrelerin olduğu arrayler var. Optimized reader kullanarak büyük veriler içeren xlsx dosyalarını okuma işlemini hatasız ve hızlı bir şekilde gerçekleştirebiliriz.
Merhaba,
Python yazılım dilini yeni öğrenmeye başlamış bir öğrenciyim. Bahsettiğiniz şu kurguyu “250 bin satırlık bir Xlsx dosyamız var ve biz bu dosyayı okuyup bir tablo yapmak istiyoruz” yapmak istiyorum, yazıdaki adımları uygulamaya çalıştım ama yapamadım. Bu kodların daha detaylı bir açıklaması varsa beni yönlendirebilir misiniz?
Teşekkür ederim.