Excel-Datei mit neuen Zeilen erweitern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
AmateurPython999
User
Beiträge: 6
Registriert: Freitag 7. Januar 2022, 17:59

Hallo zusammen,

ich taste mich momentan an Python ran und würde gerne die Eingaben im Python-Programm in Excel ausgeben.
Nach vielen Einführungen zu Pandas und auch Hilfeleistungen in diesem Forum, habe ich bereits etwas mit kleinen Erfolgen programmieren können (siehe Code).
Nach Ende des Programmlaufs speichert Python die Eingaben wie gewünscht in Excel.
Nun hätte ich gerne, dass beim zweiten, dritten, ... Programmlauf die Eingaben in den darauffolgenden Zeilen der Excel-Datei gespeichert werden, was bei meinem derzeitigen Code nicht der Fall ist. Stattdessen werden bei einem zweiten Programmlauf die abgesicherten Eingaben des ersten Programmlaufs überschrieben und dadurch verloren.
Mein Grundgedanke beim derzeitigen Code ist: Python liest die Excel-Datei, erweitert Sie mit den neuen Eingaben und speichert sie ab.

Was stimmt nicht und musst korrigiert werden, sodass die Excel-Datei erweitert statt nur überschrieben wird?

Danke!

Code: Alles auswählen

import pandas

print("Willkommen bei der Berechnung! Bitte geben Sie Ihren Namen an!")
name = str(raw_input())
print("Herzlich Willkommen " + name + "! Bitte geben Sie die Hoehe der Rechnungssumme in Zahlen an!")
rechnungssumme = (float(raw_input()))
print("Bitte geben Sie Ihr Alter in ganzen Zahlen an.")
alter = str(int(raw_input()))
print("Wie viel betraegt die Summe?")
summe = str(raw_input())

pp = pandas.read_excel('pythonass.xls')
df = pandas.DataFrame ({'1_Name': [ name ], '2_Alter': [alter], '3_Rechnungssumme':[rechnungssumme],'4_Summe':[summe]})
writer = pandas.ExcelWriter('pythonass.xls', engine='xlsxwriter')
pp.to_excel(writer, sheet_name='Sheet1', index=False) , df.to_excel(writer, sheet_name='Sheet1', index=False)
writer.save()
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Hast du mal in die Dokumentation geschaut? Englisch für "Anhängen" ist "append".
AmateurPython999
User
Beiträge: 6
Registriert: Freitag 7. Januar 2022, 17:59

sparrow hat geschrieben: Dienstag 11. Januar 2022, 18:24 Hast du mal in die Dokumentation geschaut? Englisch für "Anhängen" ist "append".
Danke!!! Hat geklappt.
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

@AmateurPython999: Du benutzt raw_input, also Python2. Das wird seit über einem Jahr nicht mehr gepflegt. Steige auf Python3 um.
`input` liefert schon einen String, den nochmal in einen String umzuwandeln ist unnötig.
Strings stückelt man nicht mit + zusammen, sondern benutzt Formatstrings.
Warum sind `alter` und `summe` Strings?
Warum haben die Spaltennamen Nummern?
In der vorletzten Zeile erzeugst Du ein Tuple, das Du nicht weiter verwendest und das auch gar keinen Sinn macht. Da solltest Du kein Tuple erzeugen!
`ExcelWriter` benutzt man mit with.

Code: Alles auswählen

import pandas

def main():
    print("Willkommen bei der Berechnung! Bitte geben Sie Ihren Namen an!")
    name = input()
    print(f"Herzlich Willkommen {name}! Bitte geben Sie die Hoehe der Rechnungssumme in Zahlen an!")
    rechnungssumme = float(input())
    print("Bitte geben Sie Ihr Alter in ganzen Zahlen an.")
    alter = int(input())
    print("Wie viel betraegt die Summe?")
    summe = float(input())

    pp = pandas.read_excel('pythonass.xls')
    df = pandas.DataFrame ({'Name': [ name ], 'Alter': [alter], 'Rechnungssumme':[rechnungssumme],'Summe':[summe]})
    with pandas.ExcelWriter('pythonass.xls', engine='xlsxwriter') as writer:
        pp.to_excel(writer, sheet_name='Sheet1', index=False)
        df.to_excel(writer, sheet_name='Sheet1', index=False)

if __name__ == "__main__":
    main()
Antworten