Modi per automatizzare e personalizzare i risultati JSL in PowerPoint<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao a tutti ,
Sto cercando di automatizzare una presentazione PowerPoint personalizzata@@ in JSL. Anche se ho automatizzato con successo l'intera analisi, sono un po' sfidato su come automatizzare quest'ultimo passaggio, ovvero salvare/personalizzare le figure e le tabelle generate da JSL nella presentazione Power Point esistente che ho attualmente. So che questa domanda è stata posta in modi diversi in precedenza nei seguenti post:
- Salvare le analisi in PowerPoint
- Come salvare automaticamente il grafico da JMP a PowerPoint utilizzando jsl
- Scegli il tuo cervello... Script da esportare in PowerPoint
- Come salvare l'output di JMP da JMP 12 nel modello PowerPoint della tua organizzazione
- Esportazione in PowerPoint del diario
Quanto sopra sono alcuni dei post più rilevanti che ho trovato utili, ma penso che (5) sia il più rilevante e non abbia ricevuto risposta. A costo di essere ridondante, qualcuno può fornire il modo migliore per gestire questa situazione. Per spiegare ulteriormente, diciamo che ho un rapporto personalizzato, ogni diapositiva ha diversi tipi di grafici e testo. La maggior parte delle cifre/grafici sono generati nel mio script JSL. Tuttavia, qual è il modo migliore per fare in modo che JSL esporti i grafici nella presentazione nel formato personalizzato richiesto da ciascuna diapositiva? Le opzioni che mi vengono in mente sono:
- Salva i datatable(s) JMP come fogli Excel e poi
- Genera manualmente i grafici in Excel e copia incolla in Powerpoint (attualmente in corso) - altamente inefficiente
- Scrivi una macro VBA per combinare i fogli excel e generare i grafici e inserirli in Powerpoint - non sono esperto in VBA - non voglio seguire questa strada
- Scrivi il codice VBA in JSL - sempre per lo stesso motivo sopra - non vuoi seguire questa strada
- Salva le figure in
- Rapporti - e poi? So che JSL può esportare le figure in PowerPoint nel modello che vogliamo, ma questo consente qualsiasi formattazione, se così gentilmente condividi una risorsa o uno snippet di codice
- Riviste - e poi? Devo copiare e incollare manualmente le figure in Power Point?
Desidero utilizzare JSL per fare ciò e mantenere l'intero rapporto all'interno di JSL anziché utilizzare Excel. Si prega di un consiglio gentile.
Migliore
Uday
Ri: Modi per automatizzare e personalizzare i risultati JSL in PowerPointCiao, ho eseguito il codice sopra dopo aver installato Python su Windows. ma in qualche modo questo non carica nulla ma apre lo stesso example.pptx. Lo vedo creare example.png nella directory.
Potresti dare qualche debug di questo problema?
Ri: Modi per automatizzare e personalizzare i risultati JSL in PowerPointHo ricevuto una notifica su questo post e, dato che sono passati tre anni, ho pensato di aggiornare anche la mia risposta.Da allora ho creato diversi strumenti che hanno creato PPT e seguo i passaggi 1-4.Per me l'eccezione è il passaggio 5, dove invece utilizzo una libreria Python chiamata pptx-ppt.Sembra che altri abbiano pubblicato diverse altre alternative (apparentemente a nessuno piace VBA).La cosa bella dell'utilizzo di Python è che è open source e in JMP 14 ci sono nuovi hook Python Connection, quindi puoi eseguire Python direttamente da JSL.Esempio di codice di seguito.
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");Ri: Modi per automatizzare e personalizzare i risultati JSL in PowerPointSe ho capito bene, diciamo che ho 500 grafici e voglio metterli tutti in ppt in un modello predefinito. per raggiungere questo obiettivo devo modificare il tuo codice e ripetere i comandi insert e pic1.. così tante volte. se è così sembra molto inefficiente. ma potrebbe anche essere sbagliato.Ri: Modi per automatizzare e personalizzare i risultati JSL in PowerPointCaro Uday.
In realtà passare tramite Excel per creare Powerpoint è un modo decente, indipendentemente dalla provenienza dei dati. E infatti, ci sono innumerevoli manuali sul web disponibili su come farlo. Sfortunatamente, la maggior parte di essi non è all'altezza poiché questi manuali fanno qualcos'altro rispetto a ciò che è effettivamente richiesto. E poi adattare questo codice diventerà una lunga strada da percorrere. Per evitare un problema del genere esiste un software chiamato SlideFab disponibile che gli consente di creare in modo flessibile intere presentazioni Powerpoint da qualsiasi Excel senza una sola riga di VBA.
Pertanto, un approccio potrebbe essere quello di utilizzare l'esportazione JMP e creare formule e grafici basati su questi dati in modo tale che questi dati grezzi possano essere aggiornati in qualsiasi momento senza dover riscrivere le formule. Quindi è possibile utilizzare una presentazione Powerpoint come modello o lasciare che il software la crei da zero.Quindi il software gli consente di definire quali dati di Excel devono essere inseriti in quale grafico/tabella/forma in Powerpoint. E se c'è qualche tipo di ripetizione (ad es. creare la stessa diapositiva per più scenari), allora può essere definita. È persino possibile creare titoli, commenti e persino intere trame basati sui dati, se la logica sottostante viene creata tramite formule all'interno di Excel. E poi basta un solo clic per creare automaticamente la presentazione Powerpoint.
Quindi questo è il modo che consiglierei 
Saluti
Jens
Ri: Modi per automatizzare e personalizzare i risultati JSL in PowerPointL'ho trovato davvero utile e ho creato uno script wrapper bash attorno ad esso che eseguo da cygwin bash shell per caricare automaticamente png in un powerpoint con le proporzioni corrette:
file: 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
Ri: Modi per automatizzare e personalizzare i risultati JSL in PowerPointMolti anni fa il mio meraviglioso marito ha creato un programma p3icli, che consente di caricare immagini in PowerPoint.Il nome p3icli, è un acronimo per quello che fa, P ori P unto P immagine IO inserire C comando l ine IO interfaccia.Il programma è open source e può essere scaricato dal primo link qui sotto
P3ICLI (interfaccia della riga di comando per l'inserimento di immagini in PowerPoint) . Consiglio di utilizzare la distribuzione binaria se decidi di scaricarla.
Ho scritto l'esempio JSL specifico trovato su http://p3icli.sourceforge.net/jsl_example.html .Include:
- un collegamento per il modello PowerPoint appositamente predisposto, con 3 diverse diapositive, che definiscono il layout della presentazione finale
- lo script JSL di esempio that
- apre i dati di esempio JMP Iris.jmp,
- crea e salva l'output JMP da 3 piattaforme: Trama parallela ; Matrice del grafico a dispersione (splom) e Oneway (4 grafici, ogni risposta rispetto a Specie)
- scrive i comandi p3icli per creare un frontespizio e caricare le trame nel modello PPTX,
- esegue p3icli utilizzando il comando JSL Eseguire il programma()
- il file di testo creato in JSL ed eseguito, viene visualizzato in questo link, e, infine
- un collegamento al file PowerPoint risultante.
I comandi p3icli sono abbastanza semplici, per esempio
- inserire la diapositiva # dal modello percorso del file
- title "tu fornisci il testo"
- foto # percorso_immagine {questo comando posiziona l'immagine sulla pagina}
- berretto # "tu fornisci il testo" {questo comando inserisce il testo in una casella di testo definita nel modello}
Io e molti colleghi l'abbiamo usato per caricare centinaia di grafici in pochi secondi.L'incorporamento di un'immagine in una forma PPTX può apparire distorta se la forma non è proporzionale alla dimensione dell'immagine (pixel). p3icli ha comandi per ridimensionare, tuttavia, in genere, utilizzo uno dei due metodi per garantire l'assenza di distorsioni: (1) utilizzare un comando JSL per ridimensionare il FrameBox o ridimensionare la finestra prima di salvarlo, oppure (2) utilizzare qualcosa come la risposta precedente per creare una nuova finestra e salvare la finestra come grafico e utilizzare un modello con una forma per diapositiva.
Questo richiede una piccola lettura della documentazione di p3icli su come creare un modello. Ecco un suggerimento. Salva il modello PPTX. Aprilo.Su ciascuna forma, fai clic con il pulsante destro del mouse e seleziona Formato forma.Guarda il testo alternativo.Ogni forma ha un tag: pic1, pic2 ecc. Anche ogni forma in cui si desidera posizionare il testo, ALT TEXT sarà cap1, cap2, ecc. Quindi l'essenza è definire un layout, quindi salvare grafici e scrivere comandi su come quale grafico va dove.Nota che puoi avere un modello con loghi e documentazione di backup.Il comando p3icli copia il formato sorgente su manterrà i loghi fantasiosi e la colorazione ecc. Nota se hai un modello con 4 forme e ne riempi solo 2, le 2 forme inutilizzate non vengono visualizzate.
Questo approccio consente molta flessibilità e personalizzazione e ha risparmiato agli utenti p3icli migliaia di ore di caricamento manuale e modifica di presentazioni PPTX con comandi molto più semplici di VBA.
In questo modo, c'è una GUI per p3icli, si chiama p3i che può essere trovato sul sito web sourceforge.net.
Ri: Modi per automatizzare e personalizzare i risultati JSL in PowerPoint@msharp :
Se ho capito bene e sto seguendo il tuo approccio (1) - guardando il codice di esempio qui sotto:
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));
- Cortesia: Ian@JMP
Ogni volta che invio un grafico a un report, crea un nuovo report e quindi devo utilizzare i riferimenti di tutti questi report per combinarli in una raccolta orizzontale o verticale di finestre?
Ri: Modi per automatizzare e personalizzare i risultati JSL in PowerPointNon ho lavorato molto per automatizzare gli script in PowerPoint, ma ci ho pensato più volte.Ecco i passaggi che farei:
1) Scrivere uno script JSL che generi i dati, li analizzi e li inserisca in un report che può poi essere modificato da un utente.(valori anomali del filtro, etichette dei pin, ecc.)
Nota: se questo è costruito correttamente, di solito è qui che mi fermo e lascio all'utente il compito di scattare istantanee e quant'altro per creare PowerPoint.A tutti piacciono comunque le loro presentazioni in modo diverso e i passaggi successivi non sempre soddisfano il ROI del mio tempo.
2) Organizzare il report in schede o altra struttura di report JSL che l'utente finale possa comprendere si trasformerà in una pagina PowerPoint separata.
3) Aggiungere un pulsante al rapporto, che genererà il PowerPoint dopo che l'utente ha apportato le modifiche in JMP.
4) Esporta le schede JSL come immagini.
5) Chiedi a JSL di eseguire uno script VBA di PowerPoint che verrà quindi caricato nelle immagini e genererà la presentazione.
Ci sono molti programmi, non solo JSL, che possono generare .ppts.La mia esperienza è che non sono tutti all'altezza.Se desideri la massima personalizzazione per creare il rapporto migliore, è meglio utilizzare solo VBA per PowerPoint.È un linguaggio di scripting e, come altri linguaggi di scripting, fa bene il suo lavoro.Forse non sarai in grado di creare un fantastico componente aggiuntivo per l'analisi statistica con VBA per PowerPoint (meglio lasciarlo a JSL), ma personalizzare un .ppt?Sì, andrà alla grande.
Ri: Modi per automatizzare e personalizzare i risultati JSL in PowerPointmsharp , PMroz , Craige@JMP - Qualche idea ?