Script JSL para abrir múltiples archivos de Excel usando comodines.Hola, ¿alguien podría ayudarme a codificar JSL para abrir múltiples archivos de Excel usando comodines?
Re: Script JSL para abrir varios archivos de Excel usando comodines.En ese caso, también podría considerar usar la función Seleccionar archivo con la palabra clave "múltiple". Desde el índice de secuencias de comandos:
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] ) )
);Re: Script JSL para abrir varios archivos de Excel usando comodines.Gracias por la respuesta. Pensé que usaría un comodín para seleccionar todos los archivos (algo así como *.*). Parece que regex es excelente para seleccionar archivos específicos según algunos criterios. Parece que ahora lo necesito, solo puedo usar el ciclo for para abrir todos los archivos. Estoy seguro de que necesitaré expresiones regulares más adelante para obtener más flexibilidad.Re: Script JSL para abrir varios archivos de Excel usando comodines.Su pregunta original solicitaba la capacidad de usar un comodín al seleccionar los nombres de archivo para leer en JMP.RegEx() tiene una sintaxis que permite comodines.@ih ilustró cómo puede estructurar una función RegEx() para devolver nombres de archivos que cumplan una estructura usando comodines.
Ahora, la pregunta debe volver a usted para calificar cuál fue su cosa cuando especificó "usar comodín".
Re: Script JSL para abrir varios archivos de Excel usando comodines.Si desea abrir todos los archivos en ese directorio (sabe que todos son archivos xls), entonces ha terminado y no necesita preocuparse por las expresiones regulares.Si solo desea abrir archivos que comienzan con 'mi archivo' y terminan en '.xls', puede asegurarse de que el archivo coincida con sus criterios agregando una declaración if dentro de su ciclo for, similar a esto.
*Código no probado*
// 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 );
);
);Re: Script JSL para abrir varios archivos de Excel usando comodines.Hola,
Gracias por tomarte tu tiempo para darme la solución. Su solución está trabajada. Utilicé el siguiente guión:
Sin embargo, no estoy seguro de cómo puedo usar expresiones regulares aquí y cómo el uso de expresiones regulares será beneficioso.
Mi guion:
// 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 );
);
Re: Script JSL para abrir varios archivos de Excel usando comodines.Aquí hay una forma que podría ayudarlo a comenzar.A menos que otros usuarios ingresen la frase de búsqueda, recomiendo especificar la expresión regular usted mismo. expresión regular es un gran recurso.
//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] );
)
)
);