NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    에디터 매크로에서 Foreach 반복 액션을 사용해서 텍스트 또는 엑셀 반복하는 방법.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 엔지엠 매크로에는 [ For 반복 ]과 [ Foreach 반복 ] 2종류가 있습니다. 이외에도 반복하는 방법은 몇가지 더 존재합니다. 용도에 맞게 사용하면 되겠지만, [ 액션 이동 ]이나 [ 액션 반복 ]은 텍스트나 엑셀 또는 CSV 파일을 읽어서 처리하는 로직을 추가로 개발해야 합니다. 그래서, 간단하게 텍스트나 엑셀을 읽을 때는 Foreach 반복 액션을 사용하는게 더 효율적일 수 있습니다. 아래와 같은 텍스트 파일을 하나 생성하세요.

    안녕하세요.
    엔지엠소프트웨어입니다.
    
    엔지엠 에디터
    엔지엠 플레이어
    엔지엠 디자이너
    엔지엠 프레임워크

     

    첨부되어 있는 "Foreach 반복 테스트 1.ngs"를 열어주세요. 이 스크립트는 텍스트 파일의 내용을 읽어와서 변수에 추가하고, 반복하면서 좌측의 메모장에 입력하는 예제입니다.

    W11ErGS.png

     

     

    실행하면 아래와 같은 동작을 확인할 수 있습니다.

    OrnWRyf.gif

     

     

    텍스트 파일에 있던 내용이 메모장에 동일하게 입력되는걸 확인할 수 있습니다. 내용이 없는 빈 문자열을 삭제하려면 아래와 같이 처리할수도 있습니다.

    l3J5ehy.gif

     

     

    만약, 열과 행으로 처리하고 싶으면 어떻게 해야 할까요? 구분자를 이용하면 됩니다. 텍스트 파일을 아래와 같이 변경하세요.

    안녕하세요.
    엔지엠소프트웨어입니다.
    
    엔지엠 에디터, 엔지엠 플레이어
    엔지엠 디자이너, 엔지엠 프레임워크

     

    Foreach 반복 액션의 "아이템 분리자"의 속성 값이 콤마(,)입니다. 콤마로 분리해서 처리할 수 있습니다. 아래 동영상을 보면 콤마로 분리되기 때문에 2차원 배열로 생성된걸 확인할 수 있습니다. 2차원으로 처리되다보니 의도하지 않게 첫번째줄과 두번째줄에 줄바꿈이 생기게 되었습니다. 이 문제를 어떻게 해결해야 할까요?

    r1VlVZb.gif

     

     

    아래와 같이 빈 문자열인 경우 건너뛸 수 있도록 조건을 추가하면 됩니다. 이 스크립트는 "Foreach 반복 테스트 2.ngs"를 열어서 확인하세요.

    tBUeLMD.png

     

     

    실행하면 줄바꿈이 사라진걸 확인할 수 있습니다. 조건을 약간 바꿔볼까요? "엔지엠"으로 시작하는 텍스트만 출력해봅시다. [ 텍스트 체크 ] 액션에서 아래 그림과 같이 속성을 변경하세요. 비교할 텍스트에 "엔지엠"을 입력하고, 텍스트 비교 옵션 값을 "StartWith"로 변경하세요. 시작 문자가 "엔지엠"인 것만 가져옵니다.

    SXJL2f5.png

     

     

    엔지엠으로 시작하는 것들만 가져와서 출력하고 있습니다.

    dGuV4fD.gif

     

     

    아래와 같은 엑셀 파일을 만드세요.

    FKIzKlq.png

     

     

    아이템 형식을 Excel로 변경하고, 파일도 다시 선택하세요.

    hkn3TWl.png

     

     

    실행하면 동일한 결과를 확인할 수 있습니다. 이는 텍스트, CSV, 엑셀 파일이 모두 동일한 로직을 따르기 때문입니다. 텍스트 파일을 간단하게 엑셀로 변환할수도 있습니다. 텍스트 내용을 아래와 같이 변경해주세요. 그리고, Foreach 반복에서 엑셀을 텍스트로 변경하고, 다시 텍스트 파일을 선택하세요. 이 예제에서 주의해서 봐야할 부분은 숫자값은 큰따옴표로 묶어야 한다는 것입니다. 숫자 값의 콤마와 지수 형태의 값들을 분리자와 구분해서 처리해야 하기 때문입니다.

    이름,나이,직업
    임꺽정,"4,000",디자이너
    홍길동,"27",프로그래머
    김철수,"22",코더

     

    스크립트를 다시 실행해보세요. 콤마를 구분자로 사용했지만, 임꺽정의 나이 4,000은 구분자 처리가 되지 않았습니다. 이는 큰따옴표로 묶인 값은 구분자 처리에서 제외된다는 것을 알 수 있습니다. 따라서, 좀 더 복잡한 텍스트를 처리해야 한다면 큰따옴표를 이용해야 합니다. 구분자는 중복될 수 있기 때문입니다. 가장 좋은 방법은 원본 문서를 잘 생각해서 포멧을 정하고, 그에 맞게 작성하는것입니다.

    GSQorn2.gif

     

     

    Foreach 반복 액션이 실행되고나면, 속성창의 결과 데이타를 클릭 해보세요. 데이타 테이블 시각화 도구가 표시됩니다. 여기서 다양한 포멧으로 저장이 가능합니다.

    UT7evdD.png

     

     

    엑셀로 저장하면 아래와 같이 만들어집니다.

    7FCyOJh.png

     

     

    XML은 아래와 같이 처리가 됩니다.

    <?xml version="1.0" standalone="yes"?>
    <DocumentElement>
      <NGM>
        <F1>이름</F1>
        <F2>나이</F2>
        <F3>직업</F3>
      </NGM>
      <NGM>
        <F1>임꺽정</F1>
        <F2>4,000</F2>
        <F3>디자이너</F3>
      </NGM>
      <NGM>
        <F1>홍길동</F1>
        <F2>27</F2>
        <F3>프로그래머</F3>
      </NGM>
      <NGM>
        <F1>김철수</F1>
        <F2>22</F2>
        <F3>코더</F3>
      </NGM>
    </DocumentElement>

     

    내용이 좀 복잡해 보이긴하는데요. 이외에도 다양하게 활용 가능하기 때문에 잘 사용하면 빠르고 간편한 스크립트를 작성할 수 있습니다. 몇몇 제약이 존재하기는 하지만, 복잡한 구성이 아니라면 액션 이동과 각각의 파일 처리들을 개별적으로 만드는것보다는 훨씬 작업 시간이 단축될겁니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    첨부파일

    댓글목록

    등록된 댓글이 없습니다.