Python-Fehler bei der automatisierten PowerPoint-ErstellungHallo allerseits,
Ich habe ein JSL-Skript, das etwa 10 Diagramme in einzelnen Fenstern ausgibt. Ich arbeite an einer Möglichkeit, jedes Diagramm in einer PowerPoint-Präsentation in eine eigene Folie einzugeben. Aufgrund der Komplexität der Bilder, die ich gesehen habe, gab es eine Möglichkeit, das Python-pptx-Paket von Python zu verwenden, und ich kann alle Folien mit einem Titel erstellen, kann das Bild jedoch überhaupt nicht in Powerpoint einfügen. Unten ist der Codeausschnitt, mit dem ich arbeite, und die auskommentierte Zeile ist die Zeile, an der der Umbruch erfolgt. Ich weiß das, da die auskommentierte Zeile das Bild und die PowerPoint-Datei im richtigen Ordner ablegt und nahtlos öffnet. Wenn das Bild jedoch nicht kommentiert ist, wird es gespeichert, aber die folgende Zeile, in der das ppt im Dateiordner gespeichert wird, passiert nie und Jmp sagt ebenfalls, dass die nicht vorhandene Datei nicht geöffnet werden kann. Ich habe alles versucht, von der Verwendung von f-Strings bis hin zu Verkettungen der Strings, um das Bild in der PPT zu erhalten, aber es gelingt mir nicht. Jede Hilfe wäre sehr dankbar. Danke!
dt = Open("$SAMPLE_DATA/Big Class.jmp");
biv = dt << Bivariate( Y( :height ), X( :weight ) );
ppt_dir = "C:\Users\neel\Documents\new jmp\";
number = "12345678";
graph holding = H List Box();
graph holding << append(Report(biv));
pic holding = H List Box();
pic holding << append(graph holding << get picture);
pic_file = "example.png";
pic holding << Save Picture(ppt_dir || pic_file);
Python Init();
plog = Python Execute({ppt_dir, number, pic_file}, {img_path, left, top, height},
"\[
from pptx import Presentation
from pptx.util import Inches
img_path = ppt_dir + pic_file
prs = Presentation()
slide_1 = prs.slides.add_slide(prs.slide_layouts[0])
slide_1.shapes.title.text = "Review of " + number
slide_2 = prs.slides.add_slide(prs.slide_layouts[5])
slide_2.shapes.title.text = "Results"
slide_3 = prs.slides.add_slide(prs.slide_layouts[5])
slide_3.shapes.title.text = "Summary"
left = top = Inches(2)
#pad_summary_pic = slide_3.shapes.add_picture(img_path, left, top, height=height)
prs.save(rf"{ppt_dir}{number} Review.pptx")
]\"
);
Python Term();
//Open PPT
ppt = ppt_dir || number || " Review.pptx";
Open(ppt);Oben funktioniert, ohne dass das Bild hinzugefügt wird.
dt = Open("$SAMPLE_DATA/Big Class.jmp");
biv = dt << Bivariate( Y( :height ), X( :weight ) );
ppt_dir = "C:\Users\neel\Documents\new jmp\";
number = "12345678";
graph holding = H List Box();
graph holding << append(Report(biv));
pic holding = H List Box();
pic holding << append(graph holding << get picture);
pic_file = "example.png";
pic holding << Save Picture(ppt_dir || pic_file);
Python Init();
plog = Python Execute({ppt_dir, number, pic_file}, {img_path, left, top, height},
"\[
from pptx import Presentation
from pptx.util import Inches
img_path = ppt_dir + pic_file
prs = Presentation()
slide_1 = prs.slides.add_slide(prs.slide_layouts[0])
slide_1.shapes.title.text = "Review of " + number
slide_2 = prs.slides.add_slide(prs.slide_layouts[5])
slide_2.shapes.title.text = "Results"
slide_3 = prs.slides.add_slide(prs.slide_layouts[5])
slide_3.shapes.title.text = "Summary"
left = top = Inches(2)
pad_summary_pic = slide_3.shapes.add_picture(img_path, left, top, height=height)
prs.save(rf"{ppt_dir}{number} Review.pptx")
]\"
);
Python Term();
//Open PPT
ppt = ppt_dir || number || " Review.pptx";
Open(ppt);Dies mit dem unkommentierten add_picture ist nicht der Fall.
Danke,
Neel
Automatisierung und SkripterstellungDatenzugriffDatenexploration und -visualisierungWindowsBetreff: Python-Fehler bei der automatischen PowerPoint-ErstellungHaben Sie versucht, es einfach als Python-Code ohne JMP auszuführen (ist das Python- oder JMP-Problem)? Irgendwelche Fehlermeldungen? Meine erste Vermutung wäre, dass der Pfad falsch gebaut sein könnte. Meines Wissens nach ist die Verwendung in Python normalerweise eine gute Idee os.path – Häufige Pfadnamenmanipulationen – Python 3.11.5-Dokumentation
Betreff: Python-Fehler bei der automatischen PowerPoint-ErstellungZusätzlich zu @jthi Kommentare: Fügen Sie den Python-Code in einen Python-Try-Block ein und fangen und behandeln Sie alle Ausnahmen. Die Behandlung der Ausnahme durch JMP verbirgt sie vor Ihnen. Es funktioniert auch, den Python-Code außerhalb von JMP auszuführen.
Browser-Scripting mit Python Selenium zeigt ein Nutzungsmuster für den Versuch/außer, den ich hilfreich fand; es kehrt zurück rc entweder OK oder der Text der Ausnahmemeldung. Setzen der importieren Die Anweisungen innerhalb des Versuchs waren wirklich nützlich.
Betreff: Python-Fehler bei der automatischen PowerPoint-ErstellungDies (hervorgehoben) scheint für mich das Problem zu sein.Benennen Sie die Variable möglicherweise in „Höhe“ um, um den Konflikt mit dem Parameter „Höhe“ zu vermeiden.

Betreff: Python-Fehler bei der automatischen PowerPoint-ErstellungHallo, ich freue mich über die Antwort. Ihre Lösung zum Entfernen der Höhe war eines der beiden Dinge, die mir im Skript aufgefallen sind. Vielen Dank für die Anregung zu meinem Versehen!
Betreff: Python-Fehler bei der automatischen PowerPoint-ErstellungVielen Dank für den Vorschlag. Ich werde nach weiteren Möglichkeiten suchen, um von Python über JMP ausgelöste Ausnahmen/Fehler abzufangen. Ich schätze die Hilfe!
Betreff: Python-Fehler bei der automatischen PowerPoint-ErstellungHallo Jarmo, Ihr Vorschlag, dass der Pfad falsch sei, war tatsächlich einer der beiden Fehler im obigen Code. Mir war nicht klar, dass das \" am Ende des Dateipfads den Code tatsächlich daran hinderte, die Datei ordnungsgemäß am richtigen Speicherort zu speichern. Danke für die Hilfe!
Betreff: Python-Fehler bei der automatischen PowerPoint-ErstellungVielen Dank an alle für die Vorschläge und Hilfe! Durch die Fehlerbehebung nur mit Python wurde mir klar, dass sowohl der Dateipfad als auch die Höhenvariable verhinderten, dass die Datei gespeichert und das Bild in die PPT importiert werden konnte. Unten finden Sie den Arbeitscode für den Fall, dass jemand jemals darauf verweisen muss!
dt = Open("$SAMPLE_DATA/Big Class.jmp");
biv = dt << Bivariate( Y( :height ), X( :weight ) );
ppt_dir = "C:\Users\srejann\Documents";
number = "12345678";
graph holding = H List Box();
graph holding << append(Report(biv));
pic holding = H List Box();
pic holding << append(graph holding << get picture);
pic_file = "example.png";
pic holding << Save Picture(ppt_dir || "\" || pic_file);
Python Init();
plog = Python Execute({ppt_dir, number, pic_file}, {img_path, left, top},
"\[
from pptx import Presentation
from pptx.util import Inches
img_path = ppt_dir + f"\{pic_file}"
prs = Presentation()
slide_1 = prs.slides.add_slide(prs.slide_layouts[0])
slide_1.shapes.title.text = "Review of " + number
slide_2 = prs.slides.add_slide(prs.slide_layouts[5])
slide_2.shapes.title.text = "Results"
slide_3 = prs.slides.add_slide(prs.slide_layouts[5])
slide_3.shapes.title.text = "Summary"
left = top = Inches(2)
pic = slide_3.shapes.add_picture(img_path, left, top)
prs.save(rf"{ppt_dir}\{number} Review.pptx")
]\"
);
Python Term();
//Open PPT
ppt = ppt_dir || "\" || number || " Review.pptx";
Open(ppt);