Script JSL pour ouvrir plusieurs fichiers Excel à l'aide de caractères génériques.Salut, Quelqu'un pourrait-il m'aider à coder JSL pour ouvrir plusieurs fichiers Excel en utilisant un caractère générique?
Re : Script JSL pour ouvrir plusieurs fichiers Excel à l'aide de caractères génériques.Dans ce cas, vous pouvez également envisager d'utiliser la fonction Choisir un fichier avec le mot-clé "multiple". À partir de l'index de script :
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 pour ouvrir plusieurs fichiers Excel à l'aide de caractères génériques.Merci pour la réponse. Je pensais utiliser un caractère générique pour sélectionner tous les fichiers (quelque chose comme *.*). Semble regex est idéal pour sélectionner des fichiers spécifiques en fonction de certains critères. Semble pour mon besoin maintenant, je peux simplement utiliser la boucle for pour ouvrir tous les fichiers. Je suis sûr que j'aurai besoin de regex plus tard pour plus de flexibilité.Re : Script JSL pour ouvrir plusieurs fichiers Excel à l'aide de caractères génériques.Votre question initiale demandait la possibilité d'utiliser un caractère générique lors de la sélection des noms de fichiers à lire dans JMP.RegEx() a une syntaxe qui autorise les caractères génériques.@ih illustré comment vous pouvez structurer une fonction RegEx() pour renvoyer des noms de fichiers répondant à une structure à l'aide de caractères génériques.
Maintenant, la question doit vous revenir pour qualifier ce que vous vouliez dire lorsque vous avez spécifié "utiliser un caractère générique" ?
Re : Script JSL pour ouvrir plusieurs fichiers Excel à l'aide de caractères génériques.Si vous souhaitez ouvrir tous les fichiers de ce répertoire (vous savez que ce sont tous des fichiers xls), vous avez terminé et vous n'avez pas à vous soucier des regex.Si vous souhaitez uniquement ouvrir des fichiers commençant par "mon fichier" et se terminant par ".xls", vous pouvez vous assurer que le fichier correspond à vos critères en ajoutant une instruction if dans votre boucle for, similaire à celle-ci.
*Code non testé*
// 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 pour ouvrir plusieurs fichiers Excel à l'aide de caractères génériques.Salut,
Merci d'avoir pris de votre temps pour me donner la solution. Votre solution est travaillée. J'ai utilisé le script suivant :
Cependant, je ne sais pas comment puis-je utiliser regex ici et comment l'utilisation de regex sera bénéfique.
Mon scénario :
// 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 pour ouvrir plusieurs fichiers Excel à l'aide de caractères génériques.Voici une façon qui pourrait vous aider à démarrer.À moins que d'autres utilisateurs n'entrent la phrase de recherche, je vous recommande de spécifier vous-même l'expression régulière. RegexrName est une excellente ressource.
//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] );
)
)
);