Ich habe ein Skript, das Messdateien aus Excel in eine kombinierte Datei importiert und dann einen Teil der Datei-ID in eine Spalte "Teil-ID" zieht, die dann auf eine Tabelle mit einem "Code-Schlüssel" verweisen muss, der die Datei-ID mit der tatsächlichen in Beziehung setzt Teile-ID.
Die Excel-Datei enthält drei Arbeitsblätter, von denen nur eines für Daten nützlich ist. Das zu importieren ist einfach.
Ich möchte direkt die * echte * Teile-ID abrufen, die sich in Zelle D7 auf dem ersten Arbeitsblatt befindet.
Gibt es eine Möglichkeit, diesen Wert aus einer unbestimmten Anzahl von Dateien abzurufen, in einem Array oder einer anderen Variablen zu speichern und dann in die Hauptdatei zu kopieren?
Sie können eine Microsoft Excel-Arbeitsmappe wie eine relationale Datenbank behandeln. Auf diese Weise können Sie mit SQL eine Abfrage für den gewünschten Wert angeben. Sie können den gesamten Prozess interaktiv ausführen, um sicherzustellen, dass er funktioniert. Anschließend verfügt die resultierende Datentabelle über ein Quellentabellenskript mit der von Ihnen benötigten JSL.
Anfang Hier In der JMP-Online-Dokumentation finden Sie vollständige Anweisungen und Beispiele.
@ andersonmj2 ,
Wenn Sie ODBC und Ihre Systemdateien nicht eingerichtet haben, kann es zu einer gewissen Lernkurve kommen, insbesondere wenn 32-Bit-Office auf Ihrem PC installiert ist.
Kennzeichen, @markbailey Ab JMP 13 und dem frühen JMP14 waren die Microsoft Office-Anweisungen zur Verwendung von SYSWOW nicht sehr zuverlässig. Die Anweisungen würden für einige PCs und nicht für andere funktionieren. Hat JMP seit Anfang JMP 14 etwas unternommen, um DBase-, Text- und Excel-ODBC einzurichten? Wenn ja, bin ich interessiert. Wenn nicht, wurde für JSL Companion ein PDF mit detaillierten Anweisungen geschrieben, die zuverlässig erscheinen, aber mehrere Schritte umfassen. Ich denke, es lohnt sich, verschiedene Dateitypen mit SQL abzufragen.
Das folgende Skript soll eine Alternative mithilfe des JMP-Excel-Assistenten demonstrieren. Es gibt keine Garantie für die Leistung. Dieses Skript zeigt die JSL für eine Datei. Das Skript müsste eine Schleife erstellen, um alle Dateien zu adressieren.
Das Ergebnis finden Sie im Protokoll cid = "70.gg.7";
Beachten Sie, dass der 8. Wert verwendet wird, da Excel-Spaltenüberschriften (A, B, ...) 1 Zeile darstellen.
Names Default to Here(1);
//create Excel workbook
dt1_1 = New Table("Dummy",
New Column("A", Character, Values({"red", "white", "green", "blue", "yellow", "orange", "black", "magenta"})),
New Column("B", Numeric, Values({1,2,3,4,5,6,7,8})),
New Column("C", Numeric, Values({10,20,30,40,50,60,70,80})),
New Column("D", Character, Values({"10.aa1","20.bb.2", "30.cc.3", "40.dd.4", "50.ee.5","60.ff.6", "70.gg.7","80.hh.8"})),
New Column("E", Numeric, Values({101,102,103,104,105,106,107,108}))
);
wait(0);
dt1_2 = Open("$sample_data/Big Class.jmp");
dt1_3 = Open("$sample_data/Iris.jmp");
Create Excel Workbook("c:/temp/Test_GetExcelValue.xlsx", {"Dummy", "Big Class", "Iris"}, {"Sheet1", "Sheet2", "Sheet3"});
wait(0);
Close(dt1_1,Nosave);
Close(dt1_2,Nosave);
Close(dt1_3,Nosave);
//========================================================================
xl_dt3 = Open( "c:/temp/Test_GetExcelValue.xlsx", Invisible,
Worksheets("Sheet1"),
Worksheet Settings(1,
Has Column Headers( 1 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 8 ),
Data Starts on Column( 4 ),
Data Ends on Row(8), //0 >> not set, read to end of rows
Data Ends on Column(4), //0 >> not set, read to end of cols
)
);
cid = xl_dt3[1,1];
close(xl_dt3,NoSave);
show(cid);