Suche python pptx tutorial

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
happypy
User
Beiträge: 6
Registriert: Donnerstag 3. Oktober 2019, 19:43

Hallo Forum,

das ist mein erster Post in diesem Forum.

Ich bin gut einen Monat dabei mit Python zu arbeiten und habe mir als nächstes Projekt python pptx ausgesucht, um Powerpoint-Präsentationen zu erstellen oder bestehende zu bearbeiten.
Und bin dabei krachend gescheitert. Ich verstehe so gut wie gar nichts und komme nicht einmal über den Anfang hinaus. Die Dokumentation ist dermaßen basic und frei von jeder visuellen Hilfestellung. Es kommt mir vor wie ein schlechter Scherz, so bescheiden wie python pptx dokumentiert ist.

Google hilft nicht weiter, Youtube hilft nicht weiter. So meine Frage an Euch:

Kennt ihr gute python pptx Tutorials/Dokumentationen die:
- einem zeigen wie man existierende PPTs verändern kann (neue Werte in Charts, Tabellen einfügen etc.)

Im besten Falle in Videoform aber ich bin da nicht wählerisch.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Also ich benutze das Paket persönlich nicht. Aber was ich so bei https://python-pptx.readthedocs.io/en/l ... start.html sehe - da würde ich deiner Aussage über “Basic und frei jeder visuellen Hilfestellung” mindestens mal nicht zustimmen. Hast du das gesehen, und was davon geht nicht wie versprochen?

Allerdings würde ich aus Erfahrung im allgemeinen davon abraten sich zu viel davon zu versprechen, bestehende Dokumente zu verändern. Sowas geht oft ins Auge. Der menschlichen Fantasie sind ja keine Grenzen gesetzt, und als Resultat davon weichen Darstellung und Struktur dann doch oft überraschend ab.
nezzcarth
User
Beiträge: 1762
Registriert: Samstag 16. April 2011, 12:47

Ich kenne dazu auch kein Lehr-/Lernmaterial. Ich habe gerade mal schnell in die Dokumentation geschaut und muss zugeben, dass das für mich halt wie eine ganz normale Bibliotheks-Doku aussieht, wie es sie zu Hauf gibt (und die hiet ist sogar bebildert) :) [Edit: siehe auch __deets__ Einschätzung]. Diese richten sich an Entwickler, die Python bereits beherrschen und für die nur die Bibliothek an sich neu ist. Sitzen denn die Python-Grundlagen bereits? Kannst du ansonsten konkrete Punkte benennen, an denen du hängst? Dann kann man dir vielleicht gezielter weiterhelfen.
happypy
User
Beiträge: 6
Registriert: Donnerstag 3. Oktober 2019, 19:43

Danke für die schnellen Antworten.


Die Grundlagen habe ich aus: https://www.youtube.com/watch?v=_uQrJ0TkZlc&t=15067s
Danach habe mich intensiv mit pandas beschäftigt. Wenn die Doku stimmt, kann ich die Grundlagen erlernen.

OK, zugegeben ich bin gerade sehr angefressen und meine Einschätzung der Doku ist nicht so gaaaanz objektiv. Doch bin ich gerade über Teamspeak mit einem Python-Kenner verbunden und der strauchelt ebenso.
Ich gebe Euch mal Details:

Das nutze ich als Vorlage: https://python-pptx.readthedocs.io/en/l ... user-guide

und hänge hier: https://python-pptx.readthedocs.io/en/l ... using.html
Genauer: "ChartPlaceholder.insert_chart()"

Es gibt keinen Placeholder 10. Und dem Leser mitzuteilen, das man für das Beispiel eine pptx nutzt die einen Placeholder 10 beinhaltet, ist einfach nicht hilfreich. Wie man diesen erstellt? Steht nicht drin.
Das versuche ich derzeit:

Code: Alles auswählen

prs = Presentation('powerpoint.pptx') # hat genau eine Folie

slides = prs.slides

for shape in slides[0].placeholders:
    print('%d %s' % (shape.placeholder_format.idx, shape.name))

placeholder = slides[0].placeholders[1]  # idx key, not position
print(placeholder.name)

print(placeholder.placeholder_format.type)


chart_data = ChartData()
chart_data.categories = ['Yes', 'No']
chart_data.add_series('Series 1', (42, 24))

graphic_frame = placeholder.insert_chart(XL_CHART_TYPE.PIE, chart_data)
chart = graphic_frame.chart
print(chart.chart_type)
Error bei der drittletzen Zeile:
AttributeError: 'SlidePlaceholder' object has no attribute 'insert_chart'
Es ist ja nur aus der verdammten Vorlage kopiert! Wie soll ich etwas verstehen, wenn die Vorlage nicht funktioniert? Bzw. die Vorlage nicht so gestaltete wird, das man sie ohne Zutun einfach copy pasten kann?


Es ist einfach auch demotivierend, wenn die Doku nicht einmal über die Anfangshürden hilft. Ich meine das ist nur eine Folie. Wie ich gezielt eine bestimmte Foliennummer ansteuern kann, verstehe ich ebenso wenig mit der Anleitung.
Es muss doch irgendwo eine bessere Doku zu finden sein. Oder wenigstens Code einer Präsentation. Das alleine wäre eine große Hilfe.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Es ist halt der falsche Platzhalter. Welcher erwartet wird, steht in der Dokumentation. Ein Dokument mit dem Platzhalter ist selbst anzulegen. Steht da auch.

https://python-pptx.readthedocs.io/en/l ... sert-chart

Dann hat die auch die Nummer 10, weil ab da die benutzerdefinierten anfangen. Was AUCH in der Doku steht. Nix von dem wusste ich bis vor 5 Minuten. Alles nur erlesen in der einen Seite.

Ich muss sagen die Doku ist im Vergleich zu anderen gut. Mehr erwarten kannst du natürlich - glaube aber kaum, dass du da fündig wirst. Ich weiß nicht, ob das Projekt auch eine Mailingliste oder ähnliches hat. Das wäre dann ggf einE geeignete Anlaufstelle.
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Ich habe von Powerpoint keine Ahnung, aber ein Blick in die Dokumentation sagt: das was du anwenden möchstest braucht ein ChartPlaceholder (hast du selbst verlinkt), das was du da hast ist ein "SlidePlaceholder" (laut deiner Fehlermeldung). Das sind offensichtlich unterschiedliche Objekte. Vom grünen Tisch aus würde ich sagen: Da muss man in der PowerPoint-Datei dem entsprechenden Placeholder einen entsprechenden Typ zuweisen.

Die Dokumentation ist aus meiner Sicht in Ordnung und sogar ausgesprochen ausgiebig. Du musst dich aber schon mit dem Zielformat auseinandersetzen.
Benutzeravatar
noisefloor
User
Beiträge: 4191
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

mal abgesehen von der Qualität der Doku - die ja anscheinend doch ganz gut ist - halt ich den Ansatz für fragwürdig. PowerPoint ist nun mal dafür gemacht, dass man vor dem Rechner sitzt und sich im WYSIWYG Editor seine Folien zusammenklickt. Klar kann man über die Schnittstellen, die Microsoft bereit stellt, auf Dinge zugreifen - aber das ist halt nicht die Kernfunktionalität von PowerPoint.

Wenn ich mir Präsentationen automatisiert zusammen bauen wollte, dann würde ich das als PDF machen, mit Hilfe von Python + ReportLab. Das ist dafür gemacht, dass man PDFs mittels Programmierung baut. Und alle gängigen PDF Betrachter haben auch einen Vollild bzw. Präsentationsmodus.
Ich selber nutze selbst dann PDF, wenn ich die Präsi mit PP gebaut habe. Schon alleine aus dem Grund, dass man PDFs auf jedem Rechner irgendwie anzeigen kann. Und wenn man die Schriften ins PDF einbettet hat man auch keine Probleme mit einer falschen Darstellung, weil die Schriftart auf dem Zielsystem fehlt.

Alternativ ginge auch eines der HTML+CSS+JS basierten Präsentationssysteme, wo man sich die Folien z.B. mit einer Template Engine wie Jinja2 bauen kann.

Gruß, noisefloor
happypy
User
Beiträge: 6
Registriert: Donnerstag 3. Oktober 2019, 19:43

__deets__ hat geschrieben: Donnerstag 3. Oktober 2019, 22:06 Es ist halt der falsche Platzhalter. Welcher erwartet wird, steht in der Dokumentation. Ein Dokument mit dem Platzhalter ist selbst anzulegen. Steht da auch.
Das weiß ich alles.
Kurz: ich weiß WAS ich zu tun habe aber nicht WIE.
Und WIE genau die Powerpoint den besagten Platzhalter 10 erhält, steht nicht in der Doku. Eine gute Doku hätte diesen Schritt erklärt oder gleich die PPT bereitgestellt.
__deets__ hat geschrieben: Donnerstag 3. Oktober 2019, 22:06 Ich weiß nicht, ob das Projekt auch eine Mailingliste oder ähnliches hat. Das wäre dann ggf einE geeignete Anlaufstelle.
Die gibt es. Aber denjenigen nach einer besseren Doku zu fragen der die Doku erstellt hat, mit der ich nicht klar komme... erscheint mir nicht zielführend.
noisefloor hat geschrieben: Freitag 4. Oktober 2019, 08:49 mal abgesehen von der Qualität der Doku - die ja anscheinend doch ganz gut ist - halt ich den Ansatz für fragwürdig. PowerPoint ist nun mal dafür gemacht, dass man vor dem Rechner sitzt und sich im WYSIWYG Editor seine Folien zusammenklickt.
Leider führt für mich kein Weg an Powerpoint vorbei. Es ist obligatorisch.
Derzeit müssen vorgefertigte PPT's umständlich per Hand befüllt werden. Und wenn die Tabellen zum Befüllen ohnehin schon vorliegen, wäre es natürlich Klasse diesen Prozess zu automatisieren.
Daher meine Versuche mit python pptx.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

happypy hat geschrieben: Freitag 4. Oktober 2019, 15:59
__deets__ hat geschrieben: Donnerstag 3. Oktober 2019, 22:06 Ich weiß nicht, ob das Projekt auch eine Mailingliste oder ähnliches hat. Das wäre dann ggf einE geeignete Anlaufstelle.
Die gibt es. Aber denjenigen nach einer besseren Doku zu fragen der die Doku erstellt hat, mit der ich nicht klar komme... erscheint mir nicht zielführend.
Mit Verlaub - das ist grober Unfug. Derjenige, der das Projekt erschaffen hat, und der *versucht* es zu erklaeren - besser, als du es ihm zugestehst - ist selbstverstaendlich auch derjenige, der es weiterfuehrend erklaeren kann.

Und in der zu deiner Methode gezeigten Dokumentation steht wortwoertlich "The chart placeholder has an insert_chart() method. The presentation template built into python-pptx has no layout containing a chart placeholder, so this example assumes a starting presentation named having-chart-placeholder.pptx having a chart placeholder with idx 10 on its second slide layout:"

Er (oder sie) SAGT also, dass das Beispieldokument nicht passt. Wovon du ausgegangen bist. Aber offensichtlich nicht gelesen hast. Und dann geht's weiter mit Instruktionen wie das Dokument beschaffen sein soll. Hast du ueberhaupt mal probiert denen zu folgen? Ich habe kein PP. Aber was passiert denn, wenn du ein neues Dokument anlegst, und darin zwei Slides, und darin einen Chart-Placeholder? Hast du das probiert? Hast du dir mal die IDs (die du an anderer Stelle ausgibst) schonmal ausgeben lassen?
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

@happypy: Ich sehe nicht, dass die Dokumentation dieses Projektes dazu da ist, dir Powerpoint zu erklären. Es erkärt dir das Modul.
happypy
User
Beiträge: 6
Registriert: Donnerstag 3. Oktober 2019, 19:43

__deets__ hat geschrieben: Freitag 4. Oktober 2019, 16:15 Er (oder sie) SAGT also, dass das Beispieldokument nicht passt. Wovon du ausgegangen bist. Aber offensichtlich nicht gelesen hast. Und dann geht's weiter mit Instruktionen wie das Dokument beschaffen sein soll. Hast du ueberhaupt mal probiert denen zu folgen? Ich habe kein PP. Aber was passiert denn, wenn du ein neues Dokument anlegst, und darin zwei Slides, und darin einen Chart-Placeholder? Hast du das probiert? Hast du dir mal die IDs (die du an anderer Stelle ausgibst) schonmal ausgeben lassen?
Ich habe es gelesen.
Doch egal was ich auch mache, einen Placeholder mit idx10 bekomme ich nicht hin.
Ich habe alle Placeholder von Text bis Content durch und die idx ist stets kleiner als 10. Alle Layouts durch, alle Placeholder mal ausgeführt.
"A placeholder added to a slide layout by a user in PowerPoint will receive an idx value starting at 10" Das ist der Knackpunkt. Das weiß ich. Aber damit komme ich eben nicht weiter.
sparrow hat geschrieben: Freitag 4. Oktober 2019, 16:51 @happypy: Ich sehe nicht, dass die Dokumentation dieses Projektes dazu da ist, dir Powerpoint zu erklären. Es erkärt dir das Modul.
Die Erklärung basiert hier aber auf einer spezifischen Powerpoint-Konfiguration, die essentiell für alles weitere ist.
__deets__ hat geschrieben: Freitag 4. Oktober 2019, 16:15 Mit Verlaub - das ist grober Unfug. Derjenige, der das Projekt erschaffen hat, und der *versucht* es zu erklaeren - besser, als du es ihm zugestehst - ist selbstverstaendlich auch derjenige, der es weiterfuehrend erklaeren kann.
Da hast du sicherlich Recht.
Doch alleine was ich hier schon für einen Gegenwind bekomme (Doku ist doch prima, alles da) stimmt mich nicht gerade optimistisch das es dann anders aussieht.

Ich will auch gar nicht um die Qualität der Doku diskutieren. Ich komme mit ihr nicht klar. Also bin auf auf der Suche nach Alternativen oder neuen Informationen, um mein Problem zu lösen, das da lautet:
- Werte in einem Chart einer existierenden PPT verändern

Das kann doch nicht so schwer sein. Da muss es doch Erfahrungswerte geben oder Anlaufstellen.
Klar. Wenn sich hier keine Lösung findet, werde ich die Entwickler kontaktieren. Und ich bin ziemlich sicher, dass es nur an einer kleinen Sache hängt, wie so oft beim Programmieren.
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

happypy hat geschrieben: Freitag 4. Oktober 2019, 17:55Ich habe alle Placeholder von Text bis Content durch und die idx ist stets kleiner als 10. Alle Layouts durch, alle Placeholder mal ausgeführt.
"A placeholder added to a slide layout by a user in PowerPoint will receive an idx value starting at 10" Das ist der Knackpunkt. Das weiß ich. Aber damit komme ich eben nicht weiter.
Du weißt schon, dass die "10" bzw. idx wie der Index einer Liste der Placeholder bahandelt wird, die pptx.slide.Slied.placeholders() zurück gibt?
Du kannst auch einfach duch die Objekte iterieren und schauen, was da drin steckt.
Zuletzt geändert von sparrow am Freitag 4. Oktober 2019, 18:23, insgesamt 1-mal geändert.
Benutzeravatar
noisefloor
User
Beiträge: 4191
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@happypy: was du suchst ist ein Tutorial, keine Doku. Was zum Lernen ja legitim ist. Nur ist es in der Regel so: je spezieller das Thema desto rarer sind gute bzw. brauchbare Tutorials.

Gruß, noisefloor
happypy
User
Beiträge: 6
Registriert: Donnerstag 3. Oktober 2019, 19:43

sparrow hat geschrieben: Freitag 4. Oktober 2019, 18:18
happypy hat geschrieben: Freitag 4. Oktober 2019, 17:55Ich habe alle Placeholder von Text bis Content durch und die idx ist stets kleiner als 10. Alle Layouts durch, alle Placeholder mal ausgeführt.
"A placeholder added to a slide layout by a user in PowerPoint will receive an idx value starting at 10" Das ist der Knackpunkt. Das weiß ich. Aber damit komme ich eben nicht weiter.
Du weißt schon, dass die "10" bzw. idx wie der Index einer Liste der Placeholder bahandelt wird, die pptx.slide.Slied.placeholders() zurück gibt?
Du kannst auch einfach duch die Objekte iterieren und schauen, was da drin steckt.
Noch einmal. Ich weiß was ich zu tun habe und ich habe das alles gemacht.

Es funktioniert jetzt und das mit einem Placeholder 8, statt 10. Die 8 ist ein Chart-Platzhalter. Eine 10 habe ich nicht hinbekommen.
Ich habe dazu:
- Powerpoint geöffnet
- Ansicht --> Folienmaster
- 2. Masterfolie anwählen
- Jetzt kommt oben ein Dialog Platzhalter hinzufügen (Diagramm ausgewählt)
- Also rein damit, Masteransicht geschlossen, 2. Folie eingefügt, die das Masterformat übernimmt und damit einen Platzhalter mit Idx 8 erhalten

Das ist leider nichts was man "einfach mal so" mit Powerpoint macht und ich bin mehr durch Zufall darüber gestolpert. Die Doku ist da echt unglücklich beschrieben.

Schwere Geburt aber der Anfang ist getan und ich kann mich in den Aufbau der Diagramme einarbeiten. Danke Euch für den Input.
Ich bin weiterhin an Tutorials / Code-Schnipseln interessiert und komme auf den Thread zurück, wenn es wieder mal komplett hakt. :wink:
Antworten