와일드 카드를 사용하여 여러 Excel 파일을 여는 JSL 스크립트.안녕하세요, 누구든지 JSL을 코딩하여 와일드카드를 사용하여 여러 Excel 파일을 여는 데 도움을 줄 수 있습니까?
Re: 와일드카드를 사용하여 여러 Excel 파일을 여는 JSL 스크립트입니다.이 경우 "다중" 키워드와 함께 파일 선택 기능을 사용하는 것도 고려할 수 있습니다. 스크립팅 색인에서:
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: 와일드카드를 사용하여 여러 Excel 파일을 여는 JSL 스크립트입니다.응답해 주셔서 감사합니다. 와일드 카드를 사용하여 모든 파일(*.*과 같은 것)을 선택한다고 생각했습니다. 정규식은 일부 기준에 따라 특정 파일을 선택하는 데 좋은 것 같습니다. 이제 필요한 것 같습니다. for 루프를 사용하여 모든 파일을 열 수 있습니다. 더 많은 유연성을 위해 나중에 정규식이 필요할 것이라고 확신합니다.Re: 와일드카드를 사용하여 여러 Excel 파일을 여는 JSL 스크립트입니다.귀하의 원래 질문은 JMP로 읽을 파일 이름을 선택할 때 와일드카드를 사용하는 기능을 요청했습니다.RegEx()에는 와일드카드를 허용하는 구문이 있습니다.@ih 와일드카드를 사용하여 구조를 충족하는 파일 이름을 반환하도록 RegEx() 함수를 구조화하는 방법을 보여줍니다.
이제 "와일드 카드 사용"을 지정했을 때 귀하의 일이 무엇인지 확인하기 위해 질문을 다시해야합니까?
Re: 와일드카드를 사용하여 여러 Excel 파일을 여는 JSL 스크립트입니다.해당 디렉토리의 모든 파일을 열려면(모두 xls 파일임을 알고 있음) 완료되었으며 정규식에 대해 걱정할 필요가 없습니다.'내 파일'로 시작하고 '.xls'로 끝나는 파일만 열려면 다음과 같이 for 루프 내에 if 문을 추가하여 파일이 기준과 일치하는지 확인할 수 있습니다.
*테스트되지 않은 코드*
// 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: 와일드카드를 사용하여 여러 Excel 파일을 여는 JSL 스크립트입니다.안녕,
시간을 내어 솔루션을 제공해 주셔서 감사합니다. 귀하의 솔루션이 작동합니다. 다음 스크립트를 사용했습니다.
그러나 여기서 정규식을 어떻게 사용할 수 있는지, 정규식을 사용하는 것이 얼마나 유익한지 확신할 수 없습니다.
내 스크립트:
// 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: 와일드카드를 사용하여 여러 Excel 파일을 여는 JSL 스크립트입니다.다음은 시작할 수 있는 한 가지 방법입니다.다른 사용자가 검색 구문을 입력하지 않는 한 직접 정규식을 지정하는 것이 좋습니다. 정규식 훌륭한 자원입니다.
//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] );
)
)
);