Erreur Python dans la création automatisée de PowerPointSalut tout le monde,
J'ai un script JSL qui génère environ 10 graphiques dans des fenêtres individuelles. Je travaille sur un moyen de saisir chaque graphique dans sa propre diapositive dans un PowerPoint. En raison de la complexité des images que j'ai vues, il existait un moyen d'utiliser le package python-pptx de python pour y parvenir et je suis capable de créer toutes les diapositives avec un titre, mais je ne parviens pas du tout à insérer l'image dans PowerPoint. Vous trouverez ci-dessous l'extrait de code avec lequel je travaille et la ligne commentée est la ligne sur laquelle il se brise. Je le sais puisque la ligne commentée place l'image et le PowerPoint dans le bon dossier et s'ouvre de manière transparente. Mais lorsqu'elle n'est pas commentée, l'image est enregistrée, mais la ligne suivante où le ppt est enregistré dans le dossier de fichiers ne se produit jamais et de même, Jmp dit qu'il ne peut pas ouvrir le fichier inexistant. J'ai tout essayé, de l'utilisation de chaînes f aux concaténations de chaînes pour obtenir l'image dans le ppt, mais je n'en suis pas capable. Toute aide serait très appréciée. Merci!
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);Ci-dessus fonctionne sans que l'image ne soit ajoutée.
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);Celui-ci avec add_picture non commenté ne le fait pas.
Merci,
Néel
Automatisation et scriptsAccès aux donnéesExploration et visualisation des donnéesles fenêtresRe : Erreur Python dans la création automatisée de PowerPointAvez-vous essayé de l'exécuter comme du code Python sans JMP du tout (est-ce un problème Python ou JMP) ? Des messages d'erreur ? Ma première hypothèse serait que le chemin pourrait être mal construit. À ma connaissance, en Python, c'est généralement une bonne idée d'utiliser os.path — Manipulations courantes des noms de chemin — Documentation Python 3.11.5
Re : Erreur Python dans la création automatisée de PowerPointEn plus de @jthi commentaires : placez le code python dans un bloc try python et interceptez et gérez toute exception. La gestion de l'exception par JMP vous la cache. L'exécution du code python en dehors de JMP fonctionnera également.
Script de navigateur avec Python Selenium montre un modèle d'utilisation pour le try/sauf que j'ai trouvé utile ; ça revient RC comme soit d'accord ou le texte du message d'exception. Mettre le importer les déclarations à l’intérieur du try étaient vraiment utiles.
Re : Erreur Python dans la création automatisée de PowerPointCeci (mis en surbrillance) semble que cela pourrait être le problème pour moi.Renommez peut-être la variable "hauteur" pour éviter le conflit avec le paramètre "hauteur"

Re : Erreur Python dans la création automatisée de PowerPointBonjour, j'apprécie la réponse. Votre solution pour supprimer la hauteur était l’une des deux choses dont j’ai réalisé qu’elle n’allait pas avec le script. Merci pour la suggestion à mon oubli !
Re : Erreur Python dans la création automatisée de PowerPointMerci pour la suggestion. J'examinerai d'autres moyens de détecter les exceptions/erreurs générées par python via jmp. J'apprécie l'aide!
Re : Erreur Python dans la création automatisée de PowerPointBonjour Jarmo, Votre suggestion selon laquelle le chemin était erroné était en effet l'un des deux problèmes avec le code ci-dessus. Je n'avais pas réalisé que le \" à la fin du chemin du fichier empêchait en fait le code d'enregistrer correctement le fichier au bon endroit. Merci pour l'aide!
Re : Erreur Python dans la création automatisée de PowerPointMerci à tous pour les suggestions et l'aide! Grâce au dépannage en utilisant uniquement Python, j'ai réalisé que le chemin du fichier et la variable de hauteur empêchaient le fichier d'être enregistré et d'importer l'image dans le ppt. Vous trouverez ci-dessous le code fonctionnel au cas où quelqu'un aurait besoin d'y faire référence !
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);