Façons d'automatiser et de personnaliser les résultats JSL dans PowerPoint<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Bonjour à tous ,
J'essaie d'automatiser une présentation PowerPoint personnalisée@@ en JSL. Bien que j'aie réussi à automatiser l'ensemble de l'analyse, je suis un peu mis au défi de savoir comment automatiser cette dernière étape, c'est-à-dire enregistrer/personnaliser les figures et les tableaux générés par JSL dans la présentation Power Point existante que j'ai actuellement. Je sais que cette question a déjà été posée de différentes manières dans les messages suivants :
- Enregistrement d'analyses dans PowerPoint
- Comment enregistrer automatiquement un graphique de JMP vers PowerPoint à l'aide de jsl
- Choisissez vos cerveaux... Script à exporter vers PowerPoint
- Comment enregistrer la sortie JMP de JMP 12 dans le modèle PowerPoint de votre organisation
- Exportation PowerPoint du journal
Ce qui précède sont quelques-uns des messages les plus pertinents que j'ai trouvés utiles, mais je pense que (5) est le plus pertinent et il n'a pas été répondu. Au prix d'être redondant, quelqu'un peut-il fournir la meilleure façon de gérer cette situation. Pour expliquer davantage - disons que j'ai un rapport personnalisé - chaque diapositive contient différents types de graphiques et de texte. La plupart des figures/graphiques sont générés dans mon script JSL. Cependant - quelle est la meilleure façon d'avoir JSL exporter les graphiques dans la présentation dans le format personnalisé requis par chaque diapositive ? Les options auxquelles je peux penser sont :
- Enregistrez le(s) tableau(x) de données JMP sous forme de feuilles Excel, puis
- Générez manuellement les tracés dans Excel et copiez-collez dans Powerpoint (en cours de réalisation) - très inefficace
- Écrivez une macro VBA pour combiner les feuilles Excel et générer les graphiques et les insérer dans Powerpoint - je ne maîtrise pas VBA - je ne veux pas poursuivre dans cette voie
- Écrivez le code VBA dans JSL - encore une fois pour la même raison ci-dessus - ne voulez pas poursuivre cette route
- Enregistrez les chiffres dans
- Rapports - et après ? Je sais que JSL peut exporter les chiffres vers PowerPoint dans le modèle que nous voulons - mais cela permet-il n'importe quel formatage - si c'est le cas, veuillez partager une ressource ou un extrait de code
- Journaux - et après ? Dois-je copier coller manuellement les figures dans Power Point ?
Je souhaite utiliser JSL pour ce faire et conserver l'intégralité du rapport dans JSL plutôt que d'utiliser Excel . Merci de bien vouloir conseiller.
Meilleur
Uday
Re : Façons d'automatiser et de personnaliser les résultats JSL dans PowerPointBonjour, j'ai exécuté le code ci-dessus après avoir installé Python sur Windows. mais quelque part cela ne charge rien mais ouvre le même example.pptx. Je le vois créer example.png dans le répertoire.
Pourriez-vous donner un débogage de ce problème ?
Re : Façons d'automatiser et de personnaliser les résultats JSL dans PowerPointJ'ai reçu une notification à propos de ce message, et comme cela fait trois ans, j'ai pensé que je mettrais également à jour ma réponse.Depuis, j'ai construit plusieurs outils qui ont créé des PPT, et je suis les étapes 1 à 4.Pour moi, l'exception est l'étape 5, où j'utilise à la place une bibliothèque Python appelée pptx-ppt.Il semble que d'autres aient posté plusieurs autres alternatives (apparemment personne n'aime VBA).L'avantage d'utiliser Python est qu'il est open source et que dans JMP 14, il existe de nouveaux crochets de connexion Python, vous pouvez donc exécuter Python directement à partir de JSL.Exemple de code ci-dessous.
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 : Façons d'automatiser et de personnaliser les résultats JSL dans PowerPointSi j'ai bien compris, disons que j'ai 500 graphiques et que je veux mettre tout cela en ppt dans un modèle prédéfini. pour y parvenir, je dois modifier votre code et répéter ces commandes insert et pic1.. tant de fois. si c'est le cas, il semble très inefficace. mais peut aussi se tromper.Re : Façons d'automatiser et de personnaliser les résultats JSL dans PowerPointCher Uday.
En fait, passer par Excel pour créer Powerpoint est un moyen décent - peu importe d'où proviennent les données. Et en fait, il existe d'innombrables manuels sur le Web disponibles sur la façon de le faire. Malheureusement, la plupart d'entre eux sont un peu courts car ces manuels font autre chose que ce qui est réellement nécessaire. Et puis adapter ce code deviendra un long chemin à parcourir. Afin d'éviter un tel problème, il existe un logiciel appelé SlideFab disponible, ce qui lui permet de créer de manière flexible des présentations Powerpoint entières à partir de n'importe quel Excel sans une seule ligne de VBA.
Ainsi, une approche consisterait à utiliser l'exportation JMP et à créer des formules et des graphiques basés sur ces données de sorte que ces données brutes puissent être mises à jour à tout moment sans qu'il soit nécessaire de réécrire les formules. Ensuite, il est possible d'utiliser une présentation Powerpoint comme modèle ou de laisser le logiciel la créer à partir de zéro.Ensuite, le logiciel lui permet de définir quelles données d'Excel doivent aller dans quel graphique/tableau/forme dans Powerpoint. Et s'il y a une sorte de répétition (par exemple, créer la même diapositive pour plusieurs scénarios), elle peut également être définie. Il est même possible de créer des titres, des commentaires et même des scénarios entiers basés sur les données, si la logique sous-jacente est créée via des formules dans Excel. Et puis c'est juste un simple clic pour créer automatiquement la présentation Powerpoint.
C'est donc la méthode que je recommande 
Acclamations
Jens
Re : Façons d'automatiser et de personnaliser les résultats JSL dans PowerPointJ'ai trouvé cela très utile et j'ai créé un script wrapper bash autour de celui-ci que j'exécute à partir du shell cygwin bash pour charger automatiquement les png dans un powerpoint avec le bon rapport d'aspect:
fichier : 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 : Façons d'automatiser et de personnaliser les résultats JSL dans PowerPointIl y a de nombreuses années, mon merveilleux mari a créé un programme p3icli, qui permet de charger des images dans PowerPoint.Le nom p3icli, est un acronyme pour ce qu'il fait, P eur P point P image je insérer C commande L ine je Interface.Le programme est open source et peut être téléchargé à partir du 1er lien ci-dessous
P3ICLI (interface de ligne de commande d'insertion d'image PowerPoint) . Je recommande d'utiliser la distribution binaire si vous décidez de la télécharger.
J'ai écrit l'exemple JSL spécifique trouvé à http://p3icli.sourceforge.net/jsl_example.html .Il comprend:
- un lien vers le modèle PowerPoint spécialement conçu, avec 3 diapositives différentes, qui définissent la mise en page de la présentation finale
- l'exemple de script JSL qui
- ouvre les exemples de données JMP Iris.jmp,
- crée et enregistre la sortie JMP à partir de 3 plates-formes : Tracé parallèle ; Matrice de nuage de points (splom) et Oneway (4 parcelles, chaque réponse par rapport à l'espèce)
- écrit les commandes p3icli pour créer une page de titre et charger les tracés dans le modèle PPTX,
- exécute p3icli à l'aide de la commande JSL Exécuter de programme()
- le fichier texte créé en JSL et exécuté, s'affiche dans ce lien, et, enfin
- un lien vers le fichier PowerPoint résultant.
Les commandes p3icli sont assez simples, par exemple
- insérer une diapositive # à partir du modèle chemin du fichier
- titre "vous fournissez le texte"
- photo # chemin_image {cette commande positionne l'image sur la page}
- casquette # "vous fournissez le texte" {cette commande place le texte dans une zone de texte définie dans le modèle}
De nombreux collègues et moi-même l'avons utilisé pour charger des centaines de graphiques en quelques secondes.L'intégration d'une image dans une forme PPTX peut sembler déformée si la forme n'est pas proportionnelle à la taille de l'image (pixel). p3icli a des commandes pour redimensionner, cependant, généralement, j'utilise l'une des deux méthodes pour éviter toute distorsion : (1) utiliser une commande JSL pour redimensionner le FrameBox ou redimensionner la fenêtre avant de l'enregistrer, ou (2) utiliser quelque chose comme la réponse précédente pour créer une nouvelle fenêtre et enregistrer la fenêtre sous forme de graphique et utiliser un modèle qui a une forme par diapositive.
Cela prend un peu de lecture sur la documentation p3icli sur la façon de créer un modèle. Voici un indice. Enregistrez le modèle PPTX. Ouvrez-le.Sur chaque forme, faites un clic droit et sélectionnez Formater la forme.Regardez ALT TEXTE.Chaque forme a une balise : pic1, pic2, etc. De plus, chaque forme où vous souhaitez placer du texte, le TEXTE ALT sera cap1, cap2, etc. L'essentiel est donc de définir une mise en page, puis d'enregistrer des graphiques et d'écrire des commandes sur quels graphiques vont où.Notez que vous pouvez avoir un modèle avec des logos et une documentation de sauvegarde.La commande p3icli copier le format source sur conservera les logos et les couleurs fantaisies, etc. Notez que si vous avez un modèle avec 4 formes et que vous n'en remplissez que 2, les 2 formes inutilisées n'apparaissent pas.
Cette approche permet beaucoup de flexibilité, de personnalisation et a permis aux utilisateurs de p3icli d'économiser des milliers d'heures de chargement manuel et d'édition de présentations PPTX avec des commandes beaucoup plus simples que VBA.
De cette façon, il existe une interface graphique pour p3icli, elle s'appelle p3i et peut être trouvée sur le site Web sourceforge.net.
Re : Façons d'automatiser et de personnaliser les résultats JSL dans PowerPoint@msharp :
Si je comprends bien et que je vais avec votre approche (1) - en regardant l'exemple de code ci-dessous :
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));
- Courtoisie : Ian@JMP
Chaque fois - j'envoie un graphique à un rapport - il crée un nouveau rapport et ensuite j'ai besoin d'utiliser les références de tous ces rapports pour les combiner dans une collection horizontale ou une collection verticale de fenêtres ?
Re : Façons d'automatiser et de personnaliser les résultats JSL dans PowerPointJe n'ai pas fait beaucoup de travail pour automatiser les scripts vers PowerPoint, mais j'y ai pensé plusieurs fois.Voici les étapes que je prendrais :
1) Écrivez un script JSL qui génère les données, les analyse et les met dans un rapport qui peut ensuite être modifié par un utilisateur.(filtrer les valeurs aberrantes, épingler les étiquettes, etc.)
Remarque : Si cela est construit correctement, c'est généralement là que je m'arrête et laisse à l'utilisateur le soin de prendre des instantanés et ainsi de suite pour créer le PowerPoint.De toute façon, tout le monde aime leurs présentations différentes, et les prochaines étapes ne répondent pas toujours au retour sur investissement de mon temps.
2) Organisez le rapport en onglets ou toute autre structure de rapport JSL que l'utilisateur final peut comprendre se transformera en une page PowerPoint distincte.
3) Ajoutez un bouton au rapport, qui générera le PowerPoint une fois que l'utilisateur aura effectué ses modifications dans JMP.
4) Exportez les onglets JSL sous forme d'images.
5) Demandez à JSL d'exécuter ensuite un script PowerPoint VBA qui se chargerait ensuite dans les images et générerait la présentation.
Il existe de nombreux programmes, pas seulement JSL, qui peuvent générer des .ppts.Mon expérience est qu'ils sont tous en deçà.Si vous souhaitez un maximum de personnalisation pour créer le meilleur rapport, il est préférable d'utiliser simplement VBA pour PowerPoint.C'est un langage de script, et comme d'autres langages de script, il fait bien son travail.Peut-être que vous ne pourrez pas créer un complément d'analyse statistique génial avec VBA pour PowerPoint (mieux vaut laisser cela à JSL), mais personnalisez un .ppt ?Ouais, ça ira très bien.
Re : Façons d'automatiser et de personnaliser les résultats JSL dans PowerPointmsharp , PMroz , Craige@JMP - Des pensées ?