Script JSL per aprire più file Excel utilizzando caratteri jolly.Ciao, qualcuno potrebbe aiutarmi a codificare JSL per aprire più file Excel utilizzando caratteri jolly?
Ri: script JSL per aprire più file Excel utilizzando caratteri jolly.In tal caso potresti anche prendere in considerazione l'utilizzo della funzione Pick File con la parola chiave "multiple". Dall'indice di scripting:
Names Default To Here( 1 );
Files =
Pick File(
"Select JMP File",
"$SAMPLE_DATA",
{"JMP Files|jmp;jsl;jrn", "All Files|*"},
1,
0,
"",
"multiple"
);
For( i = 1, i <= N Items( Files ), i++,
Try( Open( Files[i] ) )
);Ri: script JSL per aprire più file Excel utilizzando caratteri jolly.Grazie per la risposta. Ho pensato di usare il carattere jolly per selezionare tutti i file (qualcosa come *.*). Sembra che regex sia ottimo per selezionare file specifici in base ad alcuni criteri. Sembra per il mio bisogno ora, posso semplicemente usare il ciclo for per aprire tutti i file. Sono sicuro che avrò bisogno di espressioni regolari in seguito per una maggiore flessibilità.Ri: script JSL per aprire più file Excel utilizzando caratteri jolly.La tua domanda originale richiedeva la possibilità di utilizzare un carattere jolly quando si selezionano i nomi dei file da leggere in JMP.RegEx() ha una sintassi che consente i caratteri jolly.@ih illustrato come è possibile strutturare una funzione RegEx() per restituire nomi di file che soddisfano una struttura utilizzando i caratteri jolly.
Ora la domanda deve tornare da te per qualificare qual era la tua cosa quando hai specificato "usare caratteri jolly"?
Ri: script JSL per aprire più file Excel utilizzando caratteri jolly.Se vuoi aprire tutti i file in quella directory (sai che sono tutti file xls), allora hai finito e non devi preoccuparti di regex.Se desideri aprire solo i file che iniziano con "my file" e terminano con ".xls", puoi assicurarti che il file corrisponda ai tuoi criteri aggiungendo un'istruzione if all'interno del tuo ciclo for, simile a questo.
*Codice non testato*
// Read all the file names
files = Files In Directory( "C:\Users\MyUserName\Documents\My Data\" );
X = N Items( files );
Y = "C:\Users\MyUserName\Documents\My Data\";
dt = New Table( "My data file" );
For( i = 1, i < X, i++,
if( !is missing( regex( files[i], "my file.*\.xls", "\0" , IGNORECASE ) ),
//open jmp files for each xls files.
dt1 = Open(
Y || files[i],
Worksheets( "my xls worksheet" ),
Use for all sheets( 0 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 0 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 1 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 )
)
);
dt1 << Set Name( files[i] );
//I concatenated all the files in one jmp file and close it each time.
dt << Concatenate( Data Table( dt1 ), "Append to first table" );
Close( dt1 );
);
);Ri: script JSL per aprire più file Excel utilizzando caratteri jolly.Ciao,
Grazie per aver dedicato del tempo per darmi la soluzione. La tua soluzione ha funzionato. Ho usato il seguente script:
Tuttavia, non sono sicuro di come posso usare regex qui e di come l'uso di regex sarà vantaggioso.
La mia sceneggiatura:
// Read all the file names
files = Files In Directory( "C:\Users\MyUserName\Documents\My Data\" );
X = N Items( files );
Y = "C:\Users\MyUserName\Documents\My Data\";
dt = New Table( "My data file");
For( i = 1, i < X, i++,
//open jmp files for each xls files.
dt1 = Open(
Y || files[i],
Worksheets( "my xls worksheet" ),
Use for all sheets( 0 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 0 ),
Number of Rows in Headers( 1 ),
Headers Start on Row( 1 ),
Data Starts on Row( 1 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 )
)
);
dt1 << Set Name( files[i] );
//I concatenated all the files in one jmp file and close it each time.
dt << Concatenate( Data Table( dt1 ), "Append to first table" );
Close( dt1 );
);
Ri: script JSL per aprire più file Excel utilizzando caratteri jolly.Ecco un modo che potrebbe farti iniziare.A meno che altri utenti non inseriscano la frase di ricerca, ti consiglio di specificare tu stesso la regex. Regexr è una grande risorsa.
//list all files in directory
files = Files in Directory( Pick Directory() );
//a string with wildcards, * for any string and ? for exactly one character
str = "My?Files*.xls*";
//Replace windcards with regex character classes. Note that this does
//not protect against all strings a user might enter
rgx = Substitute( str, ".", "\.", "*", ".*", "?", "." );
//Or just specify the regex yourself
rgx = "My Files.*\.xlsx?";
//Check each file, if it matches then open it
if( N items( files ) > 0,
for( i = 1, i <= N items( files ), i++,
if( !is missing( regex( files[i], rgx, "\0" , IGNORECASE ) ),
//Open script goes here
Show( files[i] );
)
)
);