Python'da bir excel sayfasından bilgileri alıp diğer bir excel sayfasına aktarma (openpyxl ile)

Arkadaşlar aşağıdaki “5-A Rapor.xlsx” adlı dosyadan bazı bilgileri alıp, “karne.xlsx” dosyasına kaydetmeye çalışıyorum. Kütüphane olarak openpyxl kullandım. 5-A Rapor dosyasında her bir öğrencinin Türkçe, mateÖnceden biçimlendirilmiş yazımatik, fen sosyal ve ingilizce notlarının olduğu bir sınıf listesi var. Ben buradan her dersin notunu alıp karne.xlsx’de bulunan her öğrencinin kendi sayfasına kaydetmeye çalışıyorum. Yalnız algoritma kurarken işin içinden çıkamadım. Yardımcı olur musunuz?

5-A Rapor
karne

  >   from openpyxl import load_workbook
> 
> 
> calismaKitabi=load_workbook(filename="5-A-RAPOR.xlsx")
> sayfalar=calismaKitabi["Rapor"]
> ogrenciListesi=[]
> dersNotlari=[]
> sonSatir="11"
> dersIsimleri=["Türkçe","Matematik","Fen Bilimleri","Sosyal Bilgiler","İngilizce","Din"]
> 
> 
> #Ders Fonksiyonları satır sayısını string olarak alıyor. Dizi olarak return ediyor.
> def turkceAl(satir):
>     turkce = []
>     turkce.append(sayfalar["H"+str(satir)].value)
>     turkce.append(sayfalar["I"+str(satir)].value)
>     turkce.append(sayfalar["J"+str(satir)].value)
>     return turkce
> 
> def matematikAl(satir):
>     matematik = []
>     matematik.append(sayfalar["M"+str(satir)].value)
>     matematik.append(sayfalar["N"+str(satir)].value)
>     matematik.append(sayfalar["O"+str(satir)].value)
>     #matematik.append(sayfalar["P"+str(satir)].value)
> 
>     return matematik
> 
> def fenAl(satir):
>     fen = []
>     fen.append(sayfalar["R"+str(satir)].value)
>     fen.append(sayfalar["S"+str(satir)].value)
>     fen.append(sayfalar["T"+str(satir)].value)
>     return fen
> 
> def sosyalAl(satir):
>     sosyal = []
>     sosyal.append(sayfalar["W"+str(satir)].value)
>     sosyal.append(sayfalar["X"+str(satir)].value)
>     sosyal.append(sayfalar["Y"+str(satir)].value)
> 
>     return sosyal
> 
> def ingilizceAl(satir):
>     ing = []
>     #ing.append(sayfalar["Z" + str(satir)].value)
>     #ing.append(sayfalar["AA" + str(satir)].value)
>     ing.append(sayfalar["AB" + str(satir)].value)
>     ing.append(sayfalar["AC" + str(satir)].value)
>     ing.append(sayfalar["AD" + str(satir)].value)
>     ing.append(sayfalar["AE" + str(satir)].value)
>     ing.append(sayfalar["AF" + str(satir)].value)
>     ing.append(sayfalar["AG" + str(satir)].value)
>     ing.append(sayfalar["AH" + str(satir)].value)
>     return ing
> 
> def dinAl(satir):
>      din = []
>      din.append(sayfalar["AK" + str(satir)].value)
>      return din
> 
> #Tarih Fonksiyonu. Tarihi return ediyor.
> def tarihiAl():
>     tarih=sayfalar["G2"].value
>     return tarih
> 
> #Öğrenci Liste Fonksiyonu: Parametre olarak son satır sayısını alıyor. Öğrenci Listesini  dizi olarak return ediyor.
> def ogrenciListeAl(satir):
>     satir=int(satir)
>     ogrListe=[]
>     for i in range(5,satir):
>         ogrListe.append(sayfalar["E"+str(i)].value)
>     return ogrListe
> 
> 
> 
> 
> #print(dersAl(12))
> 
> tarih=tarihiAl()

Benzer başlıklardan faydalanabilirsin

Evet göstermiş olduğunu örneği kendime göre çevirmeye çalıştım. Yalnız defalarca denememe rağmen için içerisinden çıkamadım. Sanırım bunda algoritmayı az bilmenin de etkisi var. yardımcı olabilir misiniz? Benim istediğim ikinci excelde yani sayfa yaz kısmında her yeni bilgide diğer excel çalışma sayfasına kaydetmesi. Ama onu dinamik hale getiremedim bir türlü.
karne
rapor

  from openpyxl import load_workbook

#çalışma dosyalarını aktarıyoruz.
# Bu kodun hata vermemesi için 'aa.xlsx' dosyası dizinde olmalıdır.
excel_oku = load_workbook(filename= "5-A-RAPOR.xlsx")
excel_yaz = load_workbook(filename= "karne.xlsx")

# Geçerli çalışma sayfalarını seçiyoruz.
# sheetnames: dosya içindeki çalışma sayfaların liste olarak verir.
# Biz burda elle yazmadan direk ilk sıradaki çalışma sayfalarını seçmiş olacaz.
sekme=0
sayfa_oku = excel_oku[excel_oku.sheetnames[0]]
sayfa_yaz = excel_yaz[excel_yaz.sheetnames[sekme]]


# Alacağımız verinin satır sayısını belirtiyoruz.
# Bu değer heralde her seferinde 6. satırdan başlayacak.
hucreNo_oku = 5

# Yazacağımız dosyanın boş satırının satır numarasını buluyoruz.
# while döngüsünden sonra hucreNo_yaz değeri boş satır numarasına eşit olacak.
# eğer bu sayfada binlerce kayıt olacaksa boş satırı daha kısa sürede bulmak için
# başka bir yöntem de bulunabilir.
# İlk satıra açıklama gelir diye de 2. satırdan itibaren yazmaya başladım.
hucreNo_yaz = 17

while sayfa_yaz["C"+str(hucreNo_yaz)].value != None: #hücre boş olmadığı sürece diğer satıra geç!
    hucreNo_yaz+=1

# Şimdi 'bb.xlsx' dosyasndan 'aa.xlsx' dosyasına veri aktaracağız.
# Kodlar daha sade gözüksün diye şu iki fonksiyonu tanımlayalım

#harf ve rakamını belirtiğimiz hücrenin direk değerini döndürür.
def oku(harf,rakam):
    return sayfa_oku[harf+str(rakam)].value

#harf ve rakamını belirtiğimiz hücreye, belirtiğimiz değeri atar
def yaz(harf,rakam,deger):
   sayfa_yaz[harf+str(rakam)] = deger



while sayfa_yaz["C"+str(hucreNo_yaz)].value != None: #hücre boş olmadığı sürece diğer satıra geç!
    hucreNo_yaz+=1


# 'bb.xlsx' dosyasında boş satıra denk gelene dek veri alıp aktaracağız.
sayac=0
while sayac<6: #sınıf mevcudu 7 kişi
    yaz("C", 17, deger=oku("G", 2))  # Tarih
    yaz("G", hucreNo_yaz, deger=oku("H", hucreNo_oku))  # Türkçe
    yaz("G",hucreNo_yaz, deger = oku("H",hucreNo_oku))  #Türkçe
    yaz("H",hucreNo_yaz, deger = oku("I",hucreNo_oku))  #Türkçe
    yaz("I",hucreNo_yaz, deger = oku("J",hucreNo_oku))  #Türkçe
    yaz("L",hucreNo_yaz, deger = oku("M",hucreNo_oku)) #Matematik
    yaz("M",hucreNo_yaz, deger = oku("N",hucreNo_oku))  #Matematik
    yaz("N",hucreNo_yaz, deger = oku("O",hucreNo_oku)) #Matematik
    yaz("Q", hucreNo_yaz, deger=oku("R", hucreNo_oku))  # Fen
    yaz("R", hucreNo_yaz, deger=oku("S", hucreNo_oku))  # Fen
    yaz("S", hucreNo_yaz, deger=oku("T", hucreNo_oku))  # Fen
    yaz("V", hucreNo_yaz, deger=oku("W", hucreNo_oku))  # Sosyal
    yaz("W", hucreNo_yaz, deger=oku("X", hucreNo_oku))  # Sosyal
    yaz("X", hucreNo_yaz, deger=oku("Y", hucreNo_oku))  # Sosyal
    yaz("AA", hucreNo_yaz, deger=oku("AB", hucreNo_oku))  # İngilizce
    yaz("AB", hucreNo_yaz, deger=oku("AC", hucreNo_oku))  # İngilizce
    yaz("AC", hucreNo_yaz, deger=oku("AD", hucreNo_oku))  # İngilizce
    yaz("AD", hucreNo_yaz, deger=oku("AE", hucreNo_oku))  # İngilizce
    yaz("AE", hucreNo_yaz, deger=oku("AF", hucreNo_oku))  # İngilizce
    yaz("AF", hucreNo_yaz, deger=oku("AG", hucreNo_oku))  # İngilizce
    yaz("AG", hucreNo_yaz, deger=oku("AH", hucreNo_oku))  # İngilizce
    yaz("AJ", hucreNo_yaz, deger=oku("AK", hucreNo_oku))  # Din



    sayac+=1
    sekme+=1
    hucreNo_oku+=1


# okunacak başka satır kalmadıktan sonra:
print(sekme)
excel_yaz.save("karne.xlsx")
excel_yaz.close()
print("Yazma işlemi tamamlandı!")

Yazdıktan sonra kaydetmiyorsunuz sanırım. yaz fonksiyonunun sonunda kaydetmeyi deneyin.