Ho uno script che importa i file di misurazione da Excel in un file combinato e quindi estrae parte dell'ID file in una colonna "ID parte", che deve quindi fare riferimento a una tabella con una "chiave di codice" che collega l'ID file all'effettivo ID parte.
Il file Excel ha tre fogli di lavoro, solo uno utile in termini di dati. Importare è facile.
Vorrei prendere direttamente l'ID della parte * reale *, che si trova nella cella D7 nel primo foglio di lavoro.
C'è un modo per prendere questo valore da ciascuno di un numero indeterminato di file e memorizzarlo in un array o in un'altra variabile e quindi scaricarlo nel file principale?
Puoi trattare una cartella di lavoro di Microsoft Excel come un database relazionale. In questo modo, puoi utilizzare SQL per specificare una query per il valore desiderato. È possibile eseguire in modo interattivo l'intero processo per assicurarsi che funzioni, quindi la tabella dati risultante avrà uno script della tabella di origine con il JSL necessario.
Inizio Qui nella documentazione in linea di JMP per istruzioni ed esempi completi.
@ andersonmj2 ,
Se non hai configurato ODBC, i tuoi file di sistema sono impostati, potrebbe esserci un po 'di curva di apprendimento, soprattutto se hai installato Office a 32 bit sul tuo PC.
Marchio, @markbailey , a partire da JMP 13 e all'inizio di JMP14, le istruzioni di Microsoft Office per utilizzare SYSWOW non erano molto affidabili; le istruzioni funzionerebbero per alcuni PC e non per altri. JMP ha fatto qualcosa dall'inizio di JMP 14 per configurare DBase e Text ed Excel ODBC? Se sì, sono interessato. In caso contrario, è stato scritto un PDF per JSL Companion con istruzioni dettagliate che sembrano essere affidabili, ma ha diversi passaggi. Penso che valga la pena di essere in grado di eseguire query su diversi tipi di file utilizzando SQL.
Quindi lo script seguente serve a dimostrare un'alternativa utilizzando la procedura guidata Excel di JMP. Non c'è garanzia per le prestazioni. Questo script mostra il JSL forr un file, lo script dovrebbe creare un ciclo per indirizzare tutti i file.
Vedere il registro per il risultato cid = "70.gg.7";
Nota che l'ottavo valore viene utilizzato poiché le intestazioni di colonna di Excel (A, B, ...) rappresentano 1 riga.
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);