Möglichkeiten zur Automatisierung und Anpassung von JSL-Ergebnissen in PowerPoint<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo alle ,
Ich versuche, eine benutzerdefinierte Powerpoint-Präsentation@@ in JSL zu automatisieren. Obwohl ich die gesamte Analyse erfolgreich automatisiert habe, stehe ich vor einer kleinen Herausforderung, wie ich diesen letzten Schritt automatisieren kann, d. h. die von JSL generierten Abbildungen und Tabellen in meiner vorhandenen Power Point-Präsentation speichern/anpassen. Ich weiß, dass diese Frage in den folgenden Beiträgen bereits auf unterschiedliche Weise gestellt wurde:
- Analysen in PowerPoint speichern
- So speichern Sie Diagramme mithilfe von jsl automatisch von JMP in PowerPoint
- Wählen Sie Ihr Gehirn aus ... Skript zum Exportieren nach PowerPoint
- So speichern Sie die JMP-Ausgabe von JMP 12 in der PowerPoint-Vorlage Ihrer Organisation
- PowerPoint-Export des Journals
Die oben genannten Beiträge sind einige der relevantesten Beiträge, die ich hilfreich fand, aber ich denke, dass (5) der relevanteste ist und noch nicht beantwortet wurde. Auf Kosten der Redundanz – kann mir jemand den besten Weg bieten, mit dieser Situation umzugehen? Zur näheren Erläuterung: Nehmen wir an, ich habe einen benutzerdefinierten Bericht. Jede Folie enthält unterschiedliche Arten von Grafiken und Text. Die meisten Zahlen/Grafiken werden in meinem JSL-Skript generiert. Doch wie kann JSL die Diagramme am besten in dem für jede Folie erforderlichen benutzerdefinierten Format in die Präsentation exportieren? Folgende Optionen fallen mir ein:
- Speichern Sie JMP-Datentabelle(n) als Excel-Tabellen und dann
- Erstellen Sie die Diagramme manuell in Excel und kopieren Sie sie, fügen Sie sie in Powerpoint ein (wird derzeit durchgeführt) – äußerst ineffizient
- Schreiben Sie ein VBA-Makro, um die Excel-Tabellen zu kombinieren, die Diagramme zu generieren und in Powerpoint einzufügen. Ich beherrsche VBA nicht und möchte diesen Weg nicht einschlagen
- Schreiben Sie VBA-Code in JSL – wiederum aus dem gleichen Grund wie oben – ich möchte diesen Weg nicht verfolgen
- Speichern Sie die Zahlen in
- Berichte – und dann? Ich weiß, dass JSL die Abbildungen in der von uns gewünschten Vorlage nach PowerPoint exportieren kann – aber erlaubt dies irgendeine Formatierung – wenn ja, teilen Sie uns bitte eine Ressource oder einen Codeausschnitt mit
- Zeitschriften – und dann? Soll ich die Abbildungen manuell kopieren und in Power Point einfügen?
Ich möchte dazu JSL verwenden und den gesamten Bericht in JSL behalten, anstatt Excel zu verwenden. Bitte um freundlichen Rat.
Am besten
Uday
Betreff: Möglichkeiten zur Automatisierung und Anpassung von JSL-Ergebnissen in PowerPointHallo, ich habe den obigen Code ausgeführt, nachdem ich Python unter Windows installiert hatte. aber irgendwie lädt das nichts, sondern öffnet die gleiche example.pptx. Ich sehe, dass es example.png im Verzeichnis erstellt.
Könnten Sie dieses Problem etwas debuggen?
Betreff: Möglichkeiten zur Automatisierung und Anpassung von JSL-Ergebnissen in PowerPointIch habe eine Benachrichtigung zu diesem Beitrag erhalten, und da es nun schon drei Jahre her ist, dachte ich mir, dass ich auch meine Antwort aktualisieren sollte.Seitdem habe ich mehrere Tools zum Erstellen von PPTs entwickelt und folge den Schritten 1 bis 4.Für mich ist die Ausnahme Schritt 5, wo ich stattdessen eine Python-Bibliothek namens pptx-ppt verwende.Es sieht so aus, als hätten andere mehrere andere Alternativen gepostet (anscheinend mag niemand VBA).Das Schöne an der Verwendung von Python ist, dass es Open Source ist und es in JMP 14 neue Python Connection-Hooks gibt, sodass Sie Python direkt aus JSL ausführen können.Beispielcode unten.
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");Betreff: Möglichkeiten zur Automatisierung und Anpassung von JSL-Ergebnissen in PowerPointWenn ich es richtig verstanden habe, nehmen wir an, ich habe 500 Diagramme und möchte diese alle in einer vordefinierten Vorlage in ppt einfügen. Um dies zu erreichen, muss ich Ihren Code ändern und die Befehle insert und pic1.. so oft wiederholen. Wenn ja, sieht es sehr ineffizient aus. könnte aber auch falsch sein.Betreff: Möglichkeiten zur Automatisierung und Anpassung von JSL-Ergebnissen in PowerPointLieber Uday.
Eigentlich ist es eine gute Möglichkeit, Powerpoint über Excel zu erstellen – egal, woher die Daten stammen. Und tatsächlich gibt es im Internet unzählige Handbücher dazu, wie man das macht. Leider sind die meisten davon etwas unzureichend, da diese Handbücher etwas anderes leisten, als tatsächlich erforderlich ist. Und dann wird die Anpassung dieses Codes ein langer Weg sein. Um ein solches Problem zu vermeiden, gibt es eine Software namens SlideFab verfügbar, mit dem Sie ganz flexibel ganze Powerpoint-Präsentationen aus jedem beliebigen Excel erstellen können, ohne eine einzige VBA-Zeile.
Ein Ansatz wäre also, den JMP-Export zu nutzen und auf diesen Daten aufbauende Formeln und Diagramme zu erstellen, sodass diese Rohdaten jederzeit aktualisiert werden können, ohne dass Formeln neu geschrieben werden müssen. Dann ist es möglich, eine Powerpoint-Präsentation als Vorlage zu verwenden oder die Software sie von Grund auf erstellen zu lassen.Anschließend ermöglicht die Software zu definieren, welche Daten aus Excel in welches Diagramm/welche Tabelle/Form in Powerpoint eingefügt werden sollen. Und wenn es eine Art Wiederholung gibt (z. B. die gleiche Folie für mehrere Szenarien erstellen), kann diese ebenfalls definiert werden. Es ist sogar möglich, datengesteuerte Titel, Kommentare und sogar ganze Handlungsstränge zu erstellen, wenn die zugrunde liegende Logik durch Formeln in Excel erstellt wird. Und dann genügt ein einziger Klick, um die PowerPoint-Präsentation automatisch zu erstellen.
Das ist also der Weg, den ich empfehlen würde 
Beifall
Jens
Betreff: Möglichkeiten zur Automatisierung und Anpassung von JSL-Ergebnissen in PowerPointIch fand das wirklich nützlich und habe darum herum ein Bash-Wrapper-Skript erstellt, das ich von der Cygwin-Bash-Shell aus ausführe, um PNGs automatisch in eine PowerPoint-Datei mit dem richtigen Seitenverhältnis zu laden:
Datei: 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
Betreff: Möglichkeiten zur Automatisierung und Anpassung von JSL-Ergebnissen in PowerPointVor vielen Jahren hat mein wunderbarer Mann das Programm p3icli entwickelt, das das Laden von Bildern in PowerPoint ermöglicht.Der Name p3icli ist ein Akronym für seine Tätigkeit: P ower P oint P Bild ICH einfügen C Befehl L ine ICH Schnittstelle.Das Programm ist Open Source und kann über den ersten Link unten heruntergeladen werden
P3ICLI (PowerPoint Picture Insert Command Line Interface) . Ich empfehle die Verwendung der Binärdistribution, wenn Sie sich für den Download entscheiden.
Ich habe das spezifische JSL-Beispiel geschrieben, das Sie unter finden http://p3icli.sourceforge.net/jsl_example.html .Es enthält:
- ein Link für die speziell erstellte PowerPoint-Vorlage mit drei verschiedenen Folien, die das Layout der endgültigen Präsentation definieren
- das Beispiel-JSL-Skript, das
- öffnet die JMP-Beispieldaten Iris.jmp,
- erstellt und speichert JMP-Ausgaben von 3 Plattformen: Parallele Handlung ; Streudiagrammmatrix (splom) und Oneway (4 Parzellen, jede Antwort vs. Spezies)
- schreibt die p3icli-Befehle, um eine Titelseite zu erstellen und die Plots in die PPTX-Vorlage zu laden,
- führt p3icli mit dem JSL-Befehl aus Programm ausführen()
- Die in JSL erstellte und ausgeführte Textdatei wird in diesem Link angezeigt und schließlich
- einen Link zur resultierenden PowerPoint-Datei.
p3icli-Befehle sind beispielsweise ziemlich einfach
- Folie einlegen # von Vorlage Dateipfad
- Titel „Sie liefern den Text“
- Bild # picture_path {Dieser Befehl positioniert das Bild auf der Seite}
- Deckel # „Sie geben den Text an“ {Dieser Befehl platziert Text in einem in der Vorlage definierten Textfeld}
Ich und viele Kollegen haben damit Hunderte von Diagrammen in Sekunden geladen.Das Einbetten eines Bildes in eine PPTX-Form kann verzerrt aussehen, wenn die Form nicht proportional zur Bildgröße (Pixel) ist. p3icli verfügt über Befehle zum Ändern der Größe. Normalerweise verwende ich jedoch eine von zwei Methoden, um sicherzustellen, dass keine Verzerrungen auftreten: (1) Verwenden Sie einen JSL-Befehl, um die Größe der FrameBox oder des Fensters vor dem Speichern zu bestimmen, oder (2) verwenden Sie etwas wie die vorherige Antwort um ein neues Fenster zu erstellen und das Fenster als Diagramm zu speichern und eine Vorlage zu verwenden, die eine Form pro Folie enthält.
Dazu ist ein wenig Lektüre der p3icli-Dokumentation zum Erstellen einer Vorlage erforderlich. Hier ist ein Hinweis. Speichern Sie die PPTX-Vorlage. Öffne es.Klicken Sie mit der rechten Maustaste auf jede Form und wählen Sie „Form formatieren“.Schauen Sie sich ALT TEXT an.Jede Form hat ein Tag: pic1, pic2 usw. Außerdem ist der ALT-TEXT für jede Form, an der Sie Text platzieren möchten, cap1, cap2 usw. Das Wesentliche ist also, dass Sie ein Layout definieren, dann Diagramme speichern und Befehle dazu schreiben, wie welche Grafiken wohin gehören.Beachten Sie, dass Sie eine Vorlage mit Logos und Sicherungsdokumentation haben können.Der p3icli-Befehl Quellformat kopieren auf Die ausgefallenen Logos, Farben usw. bleiben erhalten. Beachten Sie, dass die beiden nicht verwendeten Formen nicht angezeigt werden, wenn Sie eine Vorlage mit 4 Formen haben und nur 2 ausfüllen.
Dieser Ansatz ermöglicht viel Flexibilität und Anpassung und hat p3icli-Benutzern Tausende von Stunden beim manuellen Laden und Bearbeiten von PPTX-Präsentationen mit Befehlen erspart, die viel einfacher als VBA sind.
Auf diese Weise gibt es eine GUI für p3icli, sie heißt p3i und ist auf der Website sourceforge.net zu finden.
Betreff: Möglichkeiten zur Automatisierung und Anpassung von JSL-Ergebnissen in PowerPoint@msharp :
Wenn ich das richtig verstehe und Ihrem Ansatz (1) folge, schauen Sie sich den Beispielcode unten an:
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));
- Anstand : Ian@JMP
Jedes Mal, wenn ich ein Diagramm an einen Bericht sende, wird ein neuer Bericht erstellt, und dann muss ich die Referenzen aller dieser Berichte verwenden, um sie in einer horizontalen Sammlung oder einer vertikalen Sammlung von Fenstern zu kombinieren?
Betreff: Möglichkeiten zur Automatisierung und Anpassung von JSL-Ergebnissen in PowerPointIch habe nicht viel daran gearbeitet, Skripte für PowerPoint zu automatisieren, aber ich habe mehrmals darüber nachgedacht.Hier sind die Schritte, die ich unternehmen würde:
1) Schreiben Sie ein JSL-Skript, das die Daten generiert, analysiert und in einen Bericht einfügt, der dann von einem Benutzer bearbeitet werden kann.(Ausreißer filtern, Pin-Beschriftungen usw.)
Hinweis: Wenn dies richtig aufgebaut ist, höre ich normalerweise hier auf und überlasse es dem Benutzer, Schnappschüsse zu machen und so weiter, um PowerPoint zu erstellen.Jeder mag seine Präsentationen sowieso anders und die nächsten Schritte entsprechen nicht immer dem ROI meiner Zeit.
2) Organisieren Sie den Bericht in Tabs oder einer anderen JSL-Berichtsstruktur, die für den Endbenutzer verständlich ist und in eine separate PowerPoint-Seite umgewandelt wird.
3) Fügen Sie dem Bericht eine Schaltfläche hinzu, die PowerPoint generiert, nachdem der Benutzer seine Änderungen in JMP vorgenommen hat.
4) Exportieren Sie die JSL-Registerkarten als Bilder.
5) Lassen Sie JSL dann ein PowerPoint-VBA-Skript ausführen, das dann die Bilder lädt und die Präsentation generiert.
Es gibt viele Programme, nicht nur JSL, die .ppts generieren können.Ich habe die Erfahrung gemacht, dass sie alle zu kurz kommen.Wenn Sie die größtmögliche Anpassung wünschen, um den besten Bericht zu erstellen, verwenden Sie am besten einfach VBA für PowerPoint.Es ist eine Skriptsprache, und wie andere Skriptsprachen erfüllt sie ihre Aufgabe gut.Möglicherweise können Sie mit VBA für PowerPoint kein fantastisches Add-in für statistische Analysen erstellen (überlassen Sie das am besten JSL), aber passen Sie eine PPT-Datei an?Ja, das wird großartig funktionieren.
Betreff: Möglichkeiten zur Automatisierung und Anpassung von JSL-Ergebnissen in PowerPointmsharp , PMroz , Craige@JMP - Irgendwelche Gedanken?