Formas de automatizar y personalizar los resultados de JSL en PowerPoint<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola a todos ,
Estoy intentando automatizar una presentación personalizada de Powerpoint@@ en JSL. Si bien he automatizado con éxito todo el análisis, tengo un poco de desafío en cuanto a cómo automatizar este último paso, es decir, guardar/personalizar las figuras y tablas generadas por JSL en la presentación de Power Point existente que tengo actualmente. Sé que esta pregunta se ha hecho de diferentes maneras anteriormente en las siguientes publicaciones:
- Guardar análisis en PowerPoint
- Cómo guardar el gráfico automáticamente de JMP a powerpoint usando jsl
- Elija su cerebro... Script para exportar a PowerPoint
- Cómo guardar la salida JMP de JMP 12 en la plantilla de PowerPoint de su organización
- Exportación de PowerPoint del Diario
Las anteriores son algunas de las publicaciones más relevantes que encontré útiles, pero creo que (5) es la más relevante y no ha sido respondida. A costa de ser redundante, ¿alguien puede proporcionar la mejor manera de manejar esta situación? Para explicar más, digamos que tengo un informe personalizado, cada diapositiva tiene diferentes tipos de gráficos y texto. La mayoría de las figuras/gráficos se generan en mi script JSL. Sin embargo, ¿cuál es la mejor manera de que JSL exporte los gráficos a la presentación en el formato personalizado que requiere cada diapositiva? Las opciones que se me ocurren son:
- Guarde las tablas de datos JMP como hojas de Excel y luego
- Genere manualmente los gráficos en Excel y copie y pegue en Powerpoint (actualmente se está haciendo) - altamente ineficiente
- Escriba una macro de VBA para combinar las hojas de Excel y generar los gráficos e insertarlos en Powerpoint; no soy experto en VBA; no quiero seguir esta ruta
- Escriba el código VBA en JSL, nuevamente por el mismo motivo anterior, no quiera seguir esta ruta
- Guarda las figuras en
- Informes - ¿y luego? Sé que JSL puede exportar las figuras a PowerPoint en la plantilla que queramos, pero ¿permite esto cualquier formateo? Si es así, tenga la amabilidad de compartir un recurso o un fragmento de código.
- Diarios - ¿y luego? ¿Debo copiar y pegar manualmente las figuras en Power Point?
Deseo usar JSL para hacer esto y mantener todo el informe dentro de JSL en lugar de usar Excel. Por favor amablemente consejo.
Mejor
día
Re: Formas de automatizar y personalizar los resultados de JSL en PowerPointHola, ejecuté el código anterior después de instalar Python en Windows. pero de alguna manera esto no carga nada pero abre el mismo ejemplo.pptx. Lo veo crear ejemplo.png en el directorio.
¿Podría dar un poco de depuración de este problema?
Re: Formas de automatizar y personalizar los resultados de JSL en PowerPointRecibí una notificación sobre esta publicación y, dado que han pasado tres años, pensé que la mía también actualizaría mi respuesta.Desde entonces, construí varias herramientas que crearon PPT, y sigo los pasos 1-4.Para mí, la excepción es el paso 5, donde en su lugar uso una biblioteca de Python llamada pptx-ppt.Parece que otros han publicado varias otras alternativas (aparentemente a nadie le gusta VBA).Lo bueno de usar Python es que es de código abierto y en JMP 14 hay nuevos ganchos de Python Connection, por lo que puede ejecutar Python directamente desde JSL.Código de ejemplo a continuación.
Names Default to Here(1);
//Created by msharp - 6/26/18
//Example script to generate a PPT presentation from a JSL report
//This takes advantage of python-pptx and the new Python hooks in JMP 14
//python-pptx installation:
//http://python-pptx.readthedocs.io/en/latest/user/install.html
//python-pptx quick start guide:
//http://python-pptx.readthedocs.io/en/latest/user/quickstart.html
dt = Open("$SAMPLE_DATA/Big Class.jmp");
biv = dt << Bivariate( Y( :height ), X( :weight ) );
//Save Report as Picture
dir = "C:\TEMP\";
file = "example.png";
biv << Save Picture(dir || file, "png");
//Clean Up
biv << Close Window();
close(dt, nosave);
//Create PPT w/ Python
Python Init();
plog = Python Execute({dir, file}, {img_path, left, top, height},
"\[
from pptx import Presentation
from pptx.util import Inches
img_path = dir + file
prs = Presentation()
blank_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(blank_slide_layout)
left = top = Inches(1)
pic = slide.shapes.add_picture(img_path, left, top)
left = Inches(5)
height = Inches(5.5)
pic = slide.shapes.add_picture(img_path, left, top, height=height)
prs.save(dir + 'example.pptx')
]\"
);
Python Term();
//Open PPT
open(dir || "example.pptx");Re: Formas de automatizar y personalizar los resultados de JSL en PowerPointSi entendí correctamente, digamos que tengo 500 gráficos y quiero ponerlos todos en ppt en alguna plantilla predefinida. para lograr esto, tengo que modificar su código y repetir los comandos insert y pic1 .. tantas veces. si es así parece muy ineficiente. pero también podría estar equivocado.Re: Formas de automatizar y personalizar los resultados de JSL en PowerPointEstimado Uday.
En realidad, usar Excel para crear Powerpoint es una forma decente, sin importar de dónde provengan los datos. Y de hecho, hay innumerables manuales en la web disponibles sobre cómo hacer esto. Desafortunadamente, la mayoría de ellos se quedan un poco cortos ya que estos manuales hacen algo más de lo que realmente se requiere. Y luego adaptar este código se convertirá en un largo camino por recorrer. Para evitar este problema, existe un software llamado SlideFab disponible que le permite crear de manera flexible presentaciones completas de Powerpoint desde cualquier Excel sin una sola línea de VBA.
Por lo tanto, un enfoque sería usar la exportación JMP y crear fórmulas y gráficos basados en estos datos, de modo que estos datos sin procesar se puedan actualizar en cualquier momento sin necesidad de volver a escribir fórmulas. Entonces es posible usar una presentación de Powerpoint como plantilla o dejar que el software la cree desde cero.Luego, el software le permite definir qué datos de Excel deben incluirse en qué gráfico/tabla/forma en Powerpoint. Y si hay algún tipo de repetición (por ejemplo, crear la misma diapositiva para múltiples escenarios), también se puede definir. Incluso es posible crear títulos basados en datos, comentarios e incluso historias completas, si la lógica subyacente se crea a través de fórmulas dentro de Excel. Y luego es solo un clic para crear la presentación de Powerpoint automáticamente.
Así que esta es la forma que recomendaría;)
Salud
Jens
Re: Formas de automatizar y personalizar los resultados de JSL en PowerPointEncontré esto realmente útil y creé un script bash wrapper a su alrededor que ejecuto desde cygwin bash shell para cargar automáticamente png en un powerpoint con la relación de aspecto correcta:
archivo: png2ppt
#!/bin/bash
TCODE=`date +%s`
LIST=`ls -1rt *.png *.PNG`
if [[ $LIST != "" ]] ; then
# p3icli Syntax, Help: http://p3icli.sourceforge.net/p3icli_help.html
# http://p3icli.sourceforge.net/jsl_example.html
# http://p3icli.sourceforge.net/
WPATH=`cygpath -w $PWD`'\'
rm -f $TCODE.p3icli
# no cap1
echo 'open template C:\Programs\cygwin\usr\local\bin\portfolio.pot' >> $TCODE.p3icli
picX=674
picY=378 #388 #348
for F in $LIST ; do
if [[ -f $F ]] ; then
res=`pngcheck $F | cut -f2 -d'(' | cut -f1 -d','`
#res=`exiv2 $F | grep -F 'Image size :' | cut -f2 -d':'`
resX=`echo $res | cut -f1 -dx`
resY=`echo $res | cut -f2 -dx`
let aspect=$resX*10000/$resY
acutoff=17771 #9.33/5.25=1.77
if [[ $aspect -gt $acutoff ]] ; then
scale=`awk "BEGIN {printf \"%.6f\n\", $resX/$picX}"`
else
scale=`awk "BEGIN {printf \"%.6f\n\", $resY/$picY}"`
fi
X=`awk "BEGIN {printf \"%.0f\n\", $resX/$scale}"`
Y=`awk "BEGIN {printf \"%.0f\n\", $resY/$scale}"`
TITLE=`echo $F | rev | cut -c5-99 | rev | tr '_' ' '`
echo "title "\"$TITLE\" >> $TCODE.p3icli
echo "pic1 $WPATH$F" >> $TCODE.p3icli
echo "pic1 size $X,$Y" >> $TCODE.p3icli
echo "sleep 155" >> $TCODE.p3icli
echo "duplicate template # create and move to next slide" >> $TCODE.p3icli
fi
done
echo "save as presentation $WPATH$TCODE.ppt" >> $TCODE.p3icli
echo "sleep 500" >> $TCODE.p3icli
echo "kill ppt save" >> $TCODE.p3icli
cmd /C p3icli -X -l $WPATH$TCODE".log" $WPATH$TCODE".p3icli"
rm -f $TCODE.p3icli
fi
Re: Formas de automatizar y personalizar los resultados de JSL en PowerPointHace muchos años, mi maravilloso esposo creó un programa p3icli, que permite cargar imágenes en PowerPoint.El nombre p3icli, es un acrónimo de lo que hace, PAG poder PAG ungüento PAG imagen I insertar C mando L ine I interfazEl programa es de código abierto y se puede descargar desde el primer enlace a continuación
P3ICLI (interfaz de línea de comando de inserción de imagen de PowerPoint) . Recomiendo usar la distribución binaria si decides descargarla.
Escribí el ejemplo específico de JSL que se encuentra en http://p3icli.sourceforge.net/jsl_example.html .Incluye:
- un enlace para la plantilla de PowerPoint especialmente diseñada, con 3 diapositivas diferentes, que definen el diseño de la presentación final
- el script JSL de ejemplo que
- abre los datos de muestra de JMP Iris.jmp,
- crea y guarda la salida JMP de 3 plataformas: Parcela paralela ; Matriz de diagrama de dispersión (splom) y Oneway (4 parcelas, cada respuesta vs. Especie)
- escribe los comandos p3icli para crear una página de título y cargar los gráficos en la plantilla PPTX,
- ejecuta p3icli usando el comando JSL Ejecute el programa()
- el archivo de texto creado en JSL y ejecutado, se muestra en este enlace, y, finalmente
- un enlace al archivo de PowerPoint resultante.
Los comandos p3icli son bastante fáciles, por ejemplo
- insertar diapositiva # de la plantilla ruta de archivo
- title "usted proporciona el texto"
- Foto # ruta_imagen {este comando posiciona la imagen en la página}
- gorra # "usted proporciona el texto" {este comando coloca el texto en un cuadro de texto definido en la plantilla}
Muchos colegas y yo hemos usado esto para cargar cientos de gráficos en segundos.Incrustar una imagen en una forma PPTX puede verse distorsionada si la forma no es proporcional al tamaño de la imagen (píxel). p3icli tiene comandos para cambiar el tamaño, sin embargo, por lo general, uso uno de los dos métodos para garantizar que no haya distorsión: (1) use un comando JSL para cambiar el tamaño de FrameBox o el tamaño de la ventana antes de guardarlo, o (2) use algo como la respuesta anterior para crear una nueva ventana y guardar la ventana como un gráfico y usar una plantilla que tenga una forma por diapositiva.
Esto requiere una pequeña lectura de la documentación de p3icli sobre cómo crear una plantilla. Aquí hay una pista. Guarde la plantilla PPTX. Abrelo.En cada forma, haga clic con el botón derecho y seleccione Formato de forma.Mira el TEXTO ALTERNATIVO.Cada forma tiene una etiqueta: pic1, pic2, etc. Además, cada forma en la que desee colocar texto, el TEXTO ALTERNATIVO será cap1, cap2, etc. Entonces, la esencia es definir un diseño, luego guardar gráficos y escribir comandos sobre cómo qué gráficos van a dónde.Tenga en cuenta que puede tener una plantilla con logotipos y documentación de respaldo.El comando p3icli copiar el formato de origen en mantendrá los logotipos elegantes y los colores, etc. Tenga en cuenta que si tiene una plantilla con 4 formas y solo llena 2, las 2 formas no utilizadas no aparecerán.
Este enfoque permite mucha flexibilidad, personalización y ha ahorrado a los usuarios de p3icli miles de horas de carga manual y edición de presentaciones PPTX con comandos que son mucho más simples que VBA.
De esa manera, hay una GUI para p3icli, se llama p3i y se puede encontrar en el sitio web sourceforge.net.
Re: Formas de automatizar y personalizar los resultados de JSL en PowerPoint@msharp :
Si entiendo esto bien y voy con su enfoque (1), mirando el código de muestra a continuación:
NamesDefaultToHere(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
g1 = Expr(dt1 << Bivariate( Y( :height ), X( :weight ) ));
dt2 = Open("$SAMPLE_DATA/Bands Data.jmp");
g2 = Expr(dt2 << Distribution( Nominal Distribution( Column( :Name( "Banding?" ) ) ) ));
win = NewWindow("Reports from Two Tables", HListBox(g1, g2));
- Cortesía : Ian@JMP
Cada vez que envío un gráfico a un informe, se crea un nuevo informe y luego necesito usar las referencias de todos estos informes para combinarlos en una colección horizontal o vertical de ventanas.
Re: Formas de automatizar y personalizar los resultados de JSL en PowerPointNo he trabajado mucho para automatizar scripts en PowerPoint, pero lo he pensado varias veces.Aquí están los pasos que tomaría:
1) Escriba un script JSL que genere los datos, los analice y los coloque en un informe que luego pueda ser editado por un usuario.(filtrar valores atípicos, etiquetas de clavijas, etc.)
Nota: si esto está construido correctamente, aquí es donde generalmente me detengo y dejo que el usuario tome instantáneas y otras cosas para crear el PowerPoint.De todos modos, a todos les gustan sus presentaciones diferentes, y los siguientes pasos no siempre cumplen con el ROI de mi tiempo.
2) Organizar el informe en pestañas u otra estructura de informe JSL que el usuario final pueda entender se convertirá en una página de PowerPoint separada.
3) Agregue un botón al informe, que generará el PowerPoint después de que el usuario haya realizado sus ediciones en JMP.
4) Exporte las pestañas JSL como Imágenes.
5) Haga que JSL ejecute un script VBA de PowerPoint que luego cargaría las imágenes y generaría la presentación.
Hay muchos programas, no solo JSL, que pueden generar .ppts.Mi experiencia es que todos se quedan cortos.Si desea la mayor personalización para hacer el mejor informe, es mejor usar VBA para PowerPoint.Es un lenguaje de secuencias de comandos y, al igual que otros lenguajes de secuencias de comandos, hace bien su trabajo.Tal vez no pueda crear un increíble complemento de análisis estadístico con VBA para PowerPoint (es mejor dejarlo en manos de JSL), pero ¿personalizar un archivo .ppt?Sí, lo hará genial.
Re: Formas de automatizar y personalizar los resultados de JSL en PowerPointmsharp , PMroz , Craige@JMP - Alguna idea ?