JSL-Skript zum Öffnen mehrerer Excel-Dateien mit Platzhaltern.Hallo, könnte mir jemand helfen, JSL zu codieren, um mehrere Excel-Dateien mit Platzhaltern zu öffnen?
Betreff: JSL-Skript zum Öffnen mehrerer Excel-Dateien mit Platzhaltern.In diesem Fall können Sie auch die Funktion "Datei auswählen" mit dem Schlüsselwort "multiple" verwenden. Aus dem Skriptindex:
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] ) )
);Betreff: JSL-Skript zum Öffnen mehrerer Excel-Dateien mit Platzhaltern.Danke für die Antwort. Ich dachte, ich würde Platzhalter verwenden, um alle Dateien auszuwählen (etwas wie *.*). Regex scheint großartig zu sein, um bestimmte Dateien basierend auf bestimmten Kriterien auszuwählen. Scheint für meinen Bedarf jetzt, ich kann einfach die for-Schleife verwenden, um alle Dateien zu öffnen. Ich bin sicher, dass ich Regex später für mehr Flexibilität brauchen werde.Betreff: JSL-Skript zum Öffnen mehrerer Excel-Dateien mit Platzhaltern.Ihre ursprüngliche Frage forderte die Möglichkeit, bei der Auswahl der in JMP einzulesenden Dateinamen einen Platzhalter zu verwenden.RegEx() hat eine Syntax, die Wildcards zulässt.@ich h veranschaulicht, wie Sie eine RegEx()-Funktion strukturieren können, um Dateinamen zurückzugeben, die einer Struktur mit Wildcards entsprechen.
Jetzt muss die Frage an Sie zurückgehen, um zu qualifizieren, was Ihre Sache war, als Sie "Platzhalter verwenden" angegeben haben.
Betreff: JSL-Skript zum Öffnen mehrerer Excel-Dateien mit Platzhaltern.Wenn Sie jede Datei in diesem Verzeichnis öffnen möchten (Sie wissen, dass es sich um xls-Dateien handelt), sind Sie fertig und müssen sich keine Gedanken über Regex machen.Wenn Sie nur Dateien öffnen möchten, die mit „Meine Datei“ beginnen und auf „.xls“ enden, können Sie sicherstellen, dass die Datei Ihren Kriterien entspricht, indem Sie eine if-Anweisung in Ihre for-Schleife einfügen, ähnlich wie hier.
*Ungetesteter Code*
// 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 );
);
);Betreff: JSL-Skript zum Öffnen mehrerer Excel-Dateien mit Platzhaltern.Hi,
Vielen Dank, dass Sie sich die Zeit genommen haben, mir die Lösung zu geben. Ihre Lösung funktioniert. Ich habe folgendes Skript verwendet:
Ich bin mir jedoch nicht sicher, wie ich Regex hier verwenden kann und wie die Verwendung von Regex von Vorteil sein wird.
Mein Skript:
// 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 );
);
Betreff: JSL-Skript zum Öffnen mehrerer Excel-Dateien mit Platzhaltern.Hier ist eine Möglichkeit, die Ihnen den Einstieg erleichtern könnte.Sofern andere Benutzer den Suchbegriff nicht eingeben, empfehle ich, die Regex selbst anzugeben. Regexr ist eine großartige 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] );
)
)
);