Erstellung von Powerpoint mit Python

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
cedsoft
User
Beiträge: 8
Registriert: Donnerstag 26. April 2018, 14:08

Hallo zusammen,

ich habe eine Powerpoint-File generiert mithilfe von Python mit der Library python-pptx. Aber ich möchte die Pandas-Tabelle (welche von einem Einlesen CSV-Datei erstellt wurde) in die Powerpoint-Slide darstellen. Ich hab den unteren Code geschrieben, aber es funktioniert nicht. Hat vielleicht jemand eine Idee, wieso es nicht klappt? Danke

import easygui
import pandas as pd
from pptx import Presentation

# Read csv file
file_path = easygui.fileopenbox()
InputFile = pd.read_csv(file_path, sep=',', encoding='latin-1')
#Determine rows and columns
nrow = InputFile.shape[0]
ncol = InputFile.shape[1]

prs = Presentation()
###### Slide 3 #######
title_and_content = prs.slide_layouts[1]
slide3 = prs.slides.add_slide(title_and_content)
#Augment placeholder to be a table
content3 = slide3.shapes.placeholders[1]
placeholder = slide3.placeholders[1]
graphic_frame = placeholder.insert_table(rows = nrow+1, cols = ncol)
table = graphic_frame.table
prs.save('Powerpoint.pptx')
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@cedsoft: es klappt nicht, ist keine gute Fehlerbeschreibung. Was passiert? Gibt es eine Fehlermeldung? Wenn ja, welche?

Hast Du den Hinweis in der Dokumentation gelesen:
The table placeholder has an insert_table() method. The built-in template has no layout containing a table placeholder, so this example assumes a starting presentation named having-table-placeholder.pptx having a table placeholder with idx 10 on its second slide layout:
cedsoft
User
Beiträge: 8
Registriert: Donnerstag 26. April 2018, 14:08

Hallo ,

ich bekomme folgende Fehlermeldung:

AttributeError: 'SlidePlaceholder' object has no attribute 'insert_table'

Danke
__deets__
User
Beiträge: 14522
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du rufst das auf dem falschen Objekt auf. Das bezieht sich doch auf die Tabelle (graphic_frame oder table) in deinem Code.
cedsoft
User
Beiträge: 8
Registriert: Donnerstag 26. April 2018, 14:08

Was soll ich eigentlich machen? Weil ich möchte die Tabelle "InputFile" in die Slide darstellen. :(
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@cedsoft: wie soll ich noch deutlicher werden, als den Hinweis aus der Doku hier reinzukopieren. Das geht so nicht, weil man für insert_table ein passendes Template braucht!

Schau mal hier.
cedsoft
User
Beiträge: 8
Registriert: Donnerstag 26. April 2018, 14:08

Hallo Sirius,

Ich hatte diese Seite auch reingeschaut, aber ich möchte keine Tabelle erzeugen. Sondern eine CSV-Datei einlesen und dann in die Slides zu werfen. Mit der Seite geht es um eine Tabelle, die noch befüllt werden soll. So habe ich verstanden.
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Sondern eine CSV-Datei einlesen und dann in die Slides zu werfen.
Und in welcher Form? CSV-Dateien sind nur Text, den bekommst du über ein Textfeld problemlos in Powerpoint. Pandas DataFrames sind "aufgebohrte" numpy-Arrays, die musst du dann in irgendeine druckbare Form bringen.

Das hier von Tabellen geredet wird liegt a) an deinem Codebeispiel (`insert_table` macht halt nun mal das, was es sagt...) und b) ist für CSV-Daten einen naheliegende optische / druckbare Darstellung.

Gruß, noisefloor
cedsoft
User
Beiträge: 8
Registriert: Donnerstag 26. April 2018, 14:08

Hi nosefloor,

ich hab eine CSV-Datei eingelesen mit der Variable InputFile und diese ist dann ein Pandas DataFrame, welches ich in die Powerpoint Slide reinmachen möchte. Deshalb habe diese "insert_table" benutzt und es funktioniert jedoch gar nicht.
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ja, und in deinem vorherigen Post sagst du:

> aber ich möchte keine Tabelle erzeugen.

Also: willst du die Daten in eine PowerPoint Tabelle - ja oder nein?
Wenn nein - wie dann? Mit Tabulatoren ausgerichteter Text?

Gruß, noisefloor
cedsoft
User
Beiträge: 8
Registriert: Donnerstag 26. April 2018, 14:08

ja, ich möchte die Daten in einer Powerpoint Tabelle
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

dann hat dir Sirius3 doch schon alles gesagt, was zu sagen ist.

Die musst die Tabelle wie im verlinkten Beispiel anlegen und dann über den DataFrame iterieren und die Zellen füllen.

Gruß, noisefloor
cedsoft
User
Beiträge: 8
Registriert: Donnerstag 26. April 2018, 14:08

Hallo Sirius3,

Ich hab iteriert und es hat funktioniert. Vielen lieben Dank :)
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

sehr schön :-) Du darfst mich aber gerne noisefloor nennen, die Python-Skills von Sirius3 habe ich noch nicht. Will mich nicht mit den Federn anderer Nicks schmücken ;-)

Gruß, noisefloor
cedsoft
User
Beiträge: 8
Registriert: Donnerstag 26. April 2018, 14:08

Hi noisefloor,

ich bedanke mich bei dir für deine Hilfe. Es hat geklappt.

Ich möchte jetzt meine erstelle Balkendiagramm in die Slide auch mitrein. Wie kann ich damit umgehen? Muss ich unbedingt erst als JPEG speichern und dort hochladen? oder wie? Danke im Voraus
Antworten