Python, Pandas, Excel
Pandas
Pandas ile CSV dosyası read_csv
ile okunur biliyoruz. Excel
dosyalarını okumak bir o kadar kolay, read_excel
. Eger basit bir
xls dosyasi varsa elimizde bu cagri hemen bir Pandas Dataframe'i
geri dondurecektir.
Bir püf noktası şu durumda var; eğer Excel dosyası birden fazla
sayfalardan (sheet) oluşuyorsa, ki her sayfa bildiğimiz gibi ayrı
birer tablo olabilir, nasıl okuma yapacağız? Bu durumda, mesela
dosya.xlsx
içindeki Sheet1.xls
sayfasını okumak için
xls = pd.ExcelFile('dosya.xlsx')
df = pd.read_excel(xls, 'Sheet1.xls')
gerekir.
İşlem Anında Excel Dosyası Yaratmak
Gerekli paketler surada listeli:
http://www.python-excel.org/
Biz Excel uretimi icin xlwt kullandik. En basit kod
from tempfile import TemporaryFile
from xlwt import Workbook
book = Workbook()
sheet1 = book.add_sheet('Sheet 1')
sheet1.write(0,0,'A1')
book.save('simple.xls')
book.save(TemporaryFile())
0,0 hücresin bir şeyler yazılıp kaydedildi. Stil uygulaması için
easyxf tavsiye edilir, mesela write(0,0,'vs',easyxf('alignment: horizontal right'))
gibi.
Paketin bazı eksikleri sadece yazmaya yönelik olması, bir hücrenin mevcut durumunu okuyup bir şeyler eklemek imkansız. Okuma için diğer paket xlrd kullanılıyor, o zaman da ta en baştan bir xls dosyası açmış oluyorsunuz, ve başka bir ortamda / mod içinde oluyorsunuz.Excel üreten kodlarda içerik dinamik olduğu zaman kör bir şekilde veriyi uygun yere atmakla uğraşırız, birkaç kolonu satırı kapsayacak stil uygulaması (mesela renk, ağırlık -bold-, font büyüklüğü) sonradan belli alanlara uygulamak tercihimiz. xlwt ile bunları yapmak zor, write ile tekrar aynı hücreye yazdığınızda o hücrenin eski değeri eziliyor.
Çözüm write()
metotunu kendi write metotumuz sarmalayıp (wrap), bu
bizim metot içinde global bir stil listesini her yazım için kontrol
etmek, yani stili sürekli / her x,y
değeri için bu listeden
almak. Bu stil listesi basit bir Python listesi olabilir, yazım
başlamadan önce hazır olmalıdır, (x1,x2,y1,y2,stil)
tüple listesi
şeklinde, stiller belli bloklar için tanımlandığı için bir dikdörtgen
içindeler, x1,x2 kullanımı bunun için. Sarmalanan write sürekli
kendisine verilen x,y'nin hangi stil dikdörtgeninin içine düştüğünü
kontrol edecek yani.
Excel, CSV, Python
İçinde pür text verisi olan Excel dosyasını CSV dosyasına çevirmek için iyi bir kod
https://github.com/dilshod/xlsx2csv
Hızlı işliyor, kurmaya bile gerek yok. İndirilen py dosyası direk işletilir,
python xlsx2csv.py dosya.xlsx dosya.csv
şeklinde. Eger ciktida belli bir ayrac (delimiter) tanimlamak
istersek, mesela |
isareti olabilir, o zaman
python xlsx2csv.py -d "|" dosya.xlsx dosya.csv
komutu kullanilabilir.
Yukarı