Seite 1 von 1
Erstellung von Powerpoint mit Python
Verfasst: Donnerstag 26. April 2018, 14:20
von cedsoft
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')
Re: Erstellung von Powerpoint mit Python
Verfasst: Donnerstag 26. April 2018, 14:43
von Sirius3
@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:
Re: Erstellung von Powerpoint mit Python
Verfasst: Donnerstag 26. April 2018, 15:37
von cedsoft
Hallo ,
ich bekomme folgende Fehlermeldung:
AttributeError: 'SlidePlaceholder' object has no attribute 'insert_table'
Danke
Re: Erstellung von Powerpoint mit Python
Verfasst: Donnerstag 26. April 2018, 15:41
von __deets__
Du rufst das auf dem falschen Objekt auf. Das bezieht sich doch auf die Tabelle (graphic_frame oder table) in deinem Code.
Re: Erstellung von Powerpoint mit Python
Verfasst: Donnerstag 26. April 2018, 15:49
von cedsoft
Was soll ich eigentlich machen? Weil ich möchte die Tabelle "InputFile" in die Slide darstellen.

Re: Erstellung von Powerpoint mit Python
Verfasst: Donnerstag 26. April 2018, 17:54
von Sirius3
@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.
Re: Erstellung von Powerpoint mit Python
Verfasst: Donnerstag 26. April 2018, 20:11
von cedsoft
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.
Re: Erstellung von Powerpoint mit Python
Verfasst: Donnerstag 26. April 2018, 20:46
von noisefloor
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
Re: Erstellung von Powerpoint mit Python
Verfasst: Donnerstag 26. April 2018, 20:57
von cedsoft
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.
Re: Erstellung von Powerpoint mit Python
Verfasst: Donnerstag 26. April 2018, 21:04
von noisefloor
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
Re: Erstellung von Powerpoint mit Python
Verfasst: Donnerstag 26. April 2018, 22:00
von cedsoft
ja, ich möchte die Daten in einer Powerpoint Tabelle
Re: Erstellung von Powerpoint mit Python
Verfasst: Freitag 27. April 2018, 06:50
von noisefloor
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
Re: Erstellung von Powerpoint mit Python
Verfasst: Freitag 27. April 2018, 09:39
von cedsoft
Hallo Sirius3,
Ich hab iteriert und es hat funktioniert. Vielen lieben Dank

Re: Erstellung von Powerpoint mit Python
Verfasst: Freitag 27. April 2018, 09:50
von noisefloor
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
Re: Erstellung von Powerpoint mit Python
Verfasst: Freitag 27. April 2018, 10:02
von cedsoft
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