Seite 1 von 1

Python, Excel Ausgabe

Verfasst: Donnerstag 12. Juni 2025, 10:20
von JanR
Hallo zusammen,

ich komme von der EXCEL/VBA Seite und habe mich an Python getraut. :-)
In 1 Woche konnte ich schon einiges erstellen. Leider habe ich ein Punkt, den ich nicht lösen kann.

Excel/Output.
mein Ergebnis von Python bekomme ich zwar in Excel, aber nicht wie ich will.
Ich habe einige Tabellen als print Ergebnis. Die sollen alle untereinander in Excel geschrieben werden.

z.B Tabelle1 soll in Zelle A1 starten, Tabelle2 ab Zelle A30. usw.
Einzelne Werte funktionieren, aber nicht als Tabelle. Für Tipps wäre ich dankbar.
df1 und df2 werden nicht angenommen und geben dort eine Fehlermeldung aus.

Gruß Jan

Code: Alles auswählen

datafinal = {'Land': DataTP2,
             'Liga': DataTP3,
             'T.Platz': DataTP,
             'Team': data001}

datafinal2 = {'Land': DataTP2,
             'Liga': DataTP3,
             'T.Platz': DataTP,
             'Team': data001}

df1 = pd.DataFrame(datafinal)
df2 = pd.DataFrame(datafinal2)

print(df1)
print(df2)

from openpyxl.workbook import Workbook

os.chdir(r'C:\Users\xxx\Desktop\Dateien')

from openpyxl import  workbook
TabelleFinal = Workbook.active
TabelleFinal['A1'] = (df1)
TabelleFinal['A30'] = (df2)
Exceldatei.save(('Tabellenplatz.xlsx'))

Re: Python, Excel Ausgabe

Verfasst: Freitag 13. Juni 2025, 09:08
von Dennis89
Hallo,

wenn du schon `pandas`benutzt, dann gibt es eine `to_excel`- Methode:
https://pandas.pydata.org/pandas-docs/s ... excel.html

Grüße
Dennis

Re: Python, Excel Ausgabe

Verfasst: Freitag 13. Juni 2025, 09:17
von sparrow
Zeige immer den Code, den du tatsächlich ausführst zusammen mit der exakt zu dem Code passenden Fehlermeldung.
Wo wird im Code "pd" definiert?

Zum Code:
Importe gehören an den Anfang des Scripts. Nicht irgendwo versteckt darin.
Namen werden in Python klein_mit_unterstrich geschrieben. Ausgenommen sind die Namen von Klassen (PascalCase) und Konstanten (KOMPLETT_GROSS).
Warum versuchst du das Arbeitsverzeichnis zu wechseln? Das ist für den Benutzer unerwartet und unnötig.
Namensgebeung ist wichtig. Was ist "datafinal1" und warum muss man das durchnummerieren (wenn man anfängt Zahlen an Namen zu hängen ist das ein sicheres Anzeichen dafür, dass man eine Datenstruktur nutzen möchte). Und was ist dann df1? Ein datafinal mit weniger Buchstaben?

Woher hast du die Information, dass man Dataframes einfach so in Sheets platzieren klann?

Re: Python, Excel Ausgabe

Verfasst: Freitag 13. Juni 2025, 09:53
von __blackjack__
@JanR: Zu den Pfaden vielleicht noch der Hinweis auf das `pathlib`-Modul aus der Standardbibliothek.

Dann ist `ExcelDatei` nirgends definiert. Und `Workbook.active` muss man von einem `Workbook`-Objekt abfragen, nicht von der Klasse.

Re: Python, Excel Ausgabe

Verfasst: Montag 28. Juli 2025, 06:29
von Pedroski55
Du hast aus Datensicherheitsgründen die Werte einige Daten nicht angegeben! Schlau!

Geht so, aber formatieren kann man besser wenn man das Resultat in Excel öffnet.

Formatieren in openpyxl ist möglich, aber für nur eine Tabelle umständlich.

Code: Alles auswählen

import pandas as pd

savepath = '/home/peterr/temp/result.xlsx'

# ohne weitere Angaben pd.DataFrame.from_dict(datafinal) erwartet eine Liste
datafinal = {'Land': ["DataTP2"],
             'Liga': ["DataTP3"],
             'T.Platz': ["DataTP"],
             'Team': ["data001"]}

datafinal2 = {'Land': ["DataTP2"],
             'Liga': ["DataTP3"],
             'T.Platz': ["DataTP"],
             'Team': ["data001"]}

df1 = pd.DataFrame.from_dict(datafinal)
df2 = pd.DataFrame.from_dict(datafinal2)
result = pd.concat([df1, df2], axis=0)
result = result.reset_index()
# index=False funktioniert nicht, muss ein Kommunikationsproblem sein
# zwischen Pandas und openpyxl
result.to_excel(savepath, index=False)
Viel Spaß!

Re: Python, Excel Ausgabe

Verfasst: Montag 28. Juli 2025, 08:39
von LeanUnd
Pedroski55 hat geschrieben: Montag 28. Juli 2025, 06:29 Du hast aus Datensicherheitsgründen die Werte einige Daten nicht angegeben! Schlau!

Geht so, aber formatieren kann man besser wenn man das Resultat in Excel öffnet.

Formatieren in openpyxl ist möglich, aber für nur eine Tabelle umständlich.

Code: Alles auswählen

import pandas as pd

savepath = '/home/peterr/temp/result.xlsx'

# ohne weitere Angaben pd.DataFrame.from_dict(datafinal) erwartet eine Liste
datafinal = {'Land': ["DataTP2"],
             'Liga': ["DataTP3"],
             'T.Platz': ["DataTP"],
             'Team': ["data001"]}

datafinal2 = {'Land': ["DataTP2"],
             'Liga': ["DataTP3"],
             'T.Platz': ["DataTP"],
             'Team': ["data001"]}

df1 = pd.DataFrame.from_dict(datafinal)
df2 = pd.DataFrame.from_dict(datafinal2)
result = pd.concat([df1, df2], axis=0)
result = result.reset_index()
# index=False funktioniert nicht, muss ein Kommunikationsproblem sein
# zwischen Pandas und openpyxl
result.to_excel(savepath, index=False)
Viel Spaß!
Gibt es eine Möglichkeit, Spaltenbreiten oder Autofilter auf einmal zu setzen, wenn ich mit to_excel() exportiere? Manchmal exportiere ich 20+ Zeilen aus soup-beta - alles bleibt zusammen.

Re: Python, Excel Ausgabe

Verfasst: Dienstag 29. Juli 2025, 00:39
von Pedroski55
Nicht daß ich wüßte!

pandas docs link

Vielleicht speichern .to_csv dann öffne mit Excel?

Bin mehr praktisch wie theoretisch veranlagt. Keiner Experte!

Falls du einen Datensatz hier beifügen willst, es macht mir Spaß, damit zu fummeln, bis das gewünschte Resultat herauskommt!

Kannst Spaltenbreite so setzen:

Code: Alles auswählen

sheet.column_dimensions['A'].width = 20
Es gibt auch:

Code: Alles auswählen

# finde die Breite, die du haben willst
cell = ws[‘A1’]

# nutze column.autofit() 
cell.column.autofit()

Re: Python, Excel Ausgabe

Verfasst: Montag 20. Oktober 2025, 16:50
von oldboyJR
ja das result mussgewandelt werden mit

Code: Alles auswählen

result = pd.DataFrame (data) #um die Funktion anghängen zu können