soncizgi
Aktif Üye
- Mesajlar
- 166
E-okula işlenen seçmeli dersleri sınıf bazlı listelemek için yaptığım bir çalışmayı sizinle paylaşmak istedim. Bana lazım olmuştu, belki birilerinin de işine yarar. Kodun kullanımı ile ilgili anlatımı pdf dosyası olarak mesaja iliştirdim. Faydalı olması dileğiyle.
Pyhton kod
Pyhton kod
Kod:
# encoding:utf-8
import openpyxl
dosya='seçmeliders.xlsx'
book = openpyxl.load_workbook(dosya)
sheet=book['Sheet1']
toplamSatir=sheet.max_row
#print(toplamSatir)
liste=[]
siniflar=[]
#A Öğr No
#B Ad Soyad
#F Sınıf
#J Seçmeli Ders
for x in range(2,toplamSatir):
if sheet['F'+str(x)].value not in siniflar:
siniflar.append(sheet['F'+str(x)].value)
siniflar.sort()
#print(siniflar)
dersler={}
ders=[]
for sinif in siniflar:
for x in range(2,toplamSatir):
if sheet['F'+str(x)].value==sinif:
ders.append(sheet['J'+str(x)].value)
dersler.update({sinif:ders})
ders=[]
#print(dersler)
#print(dersler['6. Sınıf / J Şubesi'])
dersy=[]
yenisinif=[]
yeniliste={}
for sinif in siniflar:
y=sinif.split('/')
yenisinif.append(y[0][0]+y[1][1])
for liste in dersler[sinif]:
if liste not in dersy:
dersy.append(liste)
yeniliste.update({sinif:dersy})
dersy=[]
#print(yeniliste)
syf={}
i=1
for sinif in yenisinif:
syf[i]=book.create_sheet(sinif)
i+=1
eskiliste={}
i=1
for sinif in siniflar:
for a in range(0,len(yeniliste[sinif])):
bilgi=dersler[sinif].count(yeniliste[sinif][a])
syf[i].append([yeniliste[sinif][a],bilgi])
eskiliste[yeniliste[sinif][a]]=bilgi
#Listeyi büyükten küçüğe sıralayalım
buyukliste = sorted(eskiliste.items(), key=lambda x: x[1],reverse=True)
sira=1
for (key,value) in buyukliste:
syf[i]['A'+str(sira)]=key
syf[i]['B'+str(sira)]=value
sira+=1
syf[i].column_dimensions['A'].width = 35
i+=1
eskiliste={}
buyukliste={}
#print(yenisinif)
book.save(dosya)