Error de Python en la creación automatizada de PowerPointHola a todos,
Tengo un script JSL que genera alrededor de 10 gráficos en ventanas individuales. Estoy trabajando en una forma de ingresar cada gráfico en su propia diapositiva en un PowerPoint. Debido a las complejidades de las imágenes que vi, había una manera de usar el paquete python-pptx de Python para lograr esto y puedo crear todas las diapositivas con un título, pero no puedo colocar la imagen en PowerPoint. A continuación se muestra el fragmento de código con el que estoy trabajando y la línea comentada es la línea en la que se interrumpe. Lo sé porque la línea comentada coloca la imagen y el PowerPoint en la carpeta correcta y se abre sin problemas. Pero cuando se descomenta, la imagen se guarda, pero la siguiente línea donde el ppt se guarda en la carpeta del archivo nunca aparece y, de la misma manera, Jmp dice que no puede abrir el archivo inexistente. He intentado todo, desde usar cadenas f hasta concatenaciones de cadenas para obtener la imagen en el ppt, pero no puedo. Cualquier ayuda sería muy apreciada. ¡Gracias!
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);Lo anterior funciona sin agregar la imagen.
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);Éste con add_picture sin comentar no lo hace.
Gracias,
neel
Automatización y secuencias de comandosAcceso a los datosExploración y visualización de datosventanasRe: Error de Python en la creación automática de PowerPoint¿Has intentado ejecutarlo como código Python sin ningún JMP (es este un problema de Python o JMP)? ¿Algún mensaje de error? Mi suposición inicial sería que el camino podría estar mal construido. Que yo sepa, en Python suele ser una buena idea utilizar os.path — Manipulaciones comunes de nombres de rutas — Documentación de Python 3.11.5
Re: Error de Python en la creación automática de PowerPointAdemás de @jthi comentarios: coloque el código de Python en un bloque de prueba de Python y detecte y maneje cualquier excepción. El manejo de la excepción por parte de JMP se la oculta. También funcionará ejecutar el código Python fuera de JMP.
Secuencias de comandos del navegador con Python Selenium muestra un patrón de uso para try/except que lo encontré útil; vuelve RC Cómo sea OK o el texto del mensaje de excepción. poniendo el importar Las declaraciones dentro del try fueron realmente útiles.
Re: Error de Python en la creación automática de PowerPointParece que esto (resaltado) podría ser el problema para mí.Quizás cambie el nombre de la variable "altura" para evitar el conflicto con el parámetro "altura"

Re: Error de Python en la creación automática de PowerPointHola, agradezco la respuesta. Su solución para eliminar la altura fue una de las dos cosas que me di cuenta de que estaban mal en el script. ¡Gracias por la sugerencia a mi supervisión!
Re: Error de Python en la creación automática de PowerPointGracias por la sugerencia. Buscaré más formas de detectar excepciones/errores generados por Python a través de jmp. ¡Agradezco la ayuda!
Re: Error de Python en la creación automática de PowerPointHola Jarmo, Tu sugerencia de que la ruta era incorrecta fue de hecho una de las dos cosas que estaban mal en el código anterior. No me di cuenta de que el \" al final de la ruta del archivo en realidad impedía que el código guardara correctamente el archivo en la ubicación correcta. ¡Gracias por la ayuda!
Re: Error de Python en la creación automática de PowerPoint¡Gracias a todos por las sugerencias y ayuda! Al solucionar problemas usando solo Python, me di cuenta de que tanto la ruta del archivo como la variable de altura impedían que el archivo se guardara y se importara la imagen al ppt. ¡A continuación se muestra el código de trabajo en caso de que alguien necesite hacer referencia a esto!
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);