본문 바로가기

AA

AA 엑셀파일 통합후 특정 셀만 남기고 삭제하기

소스코드 윗단
소스코드 아랫단
엑셀파일 1번을 열어 Copy후 new.csv파일을 열어 붙여넣고 엑셀파일 1번 닫기(열고 닫는 과정에서 세션 생성 후 세션 종료)

Line 6, 7번은 new.csv파일의 엑셀 커서를 옮겨주는 행위이다.

위의 과정과 같은 행위로 2번을 열어 복사 붙여넣은 후 엑셀 커서 옮겨주고 2번파일을 닫아주는 과정
3, 4번의 엑셀파일도 마찬가지로 처리해준 과정이다

3, 4번 과정에 마지막 4번 커서이동은 맨 윗줄 제목 바로 아래로 잡아주었다 이유는 그 아래에 공통된 Header를 삭제해주기 위함이다.

공통된 Header를 제거하는 작업 통화명이라는 Title이 위치한 row단을 제거해주면 모두 제거가 되기때문에 통화명만 잡아주었다

통화명이라는 title이 저장된 cell을 list에 담아서 List루프를 돌려 delete cell로 삭제해준 뒤에 마지막 4번 엑셀을 닫아주는 과정이다.

셀 내에 유로라는 단어가 들어가 있는 cell을 찾아 list변수에 저장후 list루프를 이용하여 vCheck라는 변수에 저장시킨 뒤 vCheck의 맨 앞자리 ,를 제거시키기 위해 subString을 이용한 부분이다.

39번 Line의 vCheck 에 A1을 대입시킨 이유는 유로만 남기고 값을 삭제시킬 때 A1셀에있는 Header를 남겨주기 위함이다.

cell의 맨 마지막 column의 값을 알아오기 위한 작업

excel파일의 맨 마지막 컬럼으로 이동하여 크 컬럼의 row 즉 그 숫자를 vColNum이라는 변수에 저장한다 그 후 vCheck의 공백을 제거해 주었다(제거한 이유는 값을 역으로 받아 유로가 아닌값만 제거해야하는데 공백으로 인해 값이 맨 처음의 cell만 삭제하고 나머지는 인식하지 못하여서 공백 제거를 통하여 모든 값을 인식하도록 해주기 위함)

그 작업 이후 48번 Line에서 vCheck에 있는 값을 lstSave라는 명의 list변수에 각각 저장

Exception : 역으로 값을 받은 이유는 변수에 저장된 값이 255자 이상일 경우 Delete Cell로 한번에 삭제가 불가능 하며, 위에서부터 자를경우 셀이 밀려 코드가 꼬이기 때문에 역순으로 지워주는 작업을 진행한다.(보통 그렇게 값이 많을 경우에는 DB를 이용하여 작업하는게 효율적이라고 한다)

Exception2 : 역순으로 받아 뒤에서부터 삭제하는 법도 있긴 하지만 255자 단위로 끊어서 변수를 나눠 DeleteCell을 이용하는 방법도 있다.

루프 작업을 통하여 유로가 아닌 삭제할 값을 변수에 저장시키는 작업

Line 49 : 받아온 셀의 길이만큼 Loop를 반복시킨다.

Line 51 : vSave라는 변수에 A1~An까지의 총 받아온 셀의 길이를 저장시킨다.

Line 52 : vEqualChk라는 변수에 값을 0으로 잡아준다(이유는 아래에 설명)

Line 53 : 유로라는 단어가 저장된 셀만큼 List Loop를 이용하여 반복시킨다

Line 55~60 : Variable if문을 이용하여 저장된 받아온 셀(vSave)과 유로라는 단어가 저장된 변수 (lstSave)의 값이 같을 경우 vEqualChk에 1을 대입시키고 그렇지 않을경우(값이 다를경우) loop를 진행.

Line 62 : vEqualChk가 0일경우 즉 값이 Default인 경우 (1일경우 같은경우, 0일경우 다른경우 이지만 다르면 체크를 그만두고 다음 루프를 진행) 삭제할 값을 vAssave에 저장시킨다

68번 Line의 상세 코드내용

Line 68 : subString을 이용하여 vAssave의 앞부분에 ,를 제거시켜주기 위한 코드

Line 69 : Split을 이용하여 삭제할 값들을 List변수에 저장시킨다

Line 70 ~ 73 : 리스트루프를 이용하여 삭제할 값들을 vReverseSave라는 변수에 역순으로 저장시킨다

역순으로 받아온 값이 길이를 받아와 마지막 ,와 공백을 제거시키며 삭제해주는 과정

Line 74 : getLength를 이용하여 vReversSave의 길이를 받아와 vReverSaveLength에 저장시킨다

Line 75의 세부코드

Line 75 : vReversSave를 1번값부터 저장시킨 vReversSaveLength만큼 잘라 vReversSave에 저장시킨다.

Line 76의 세부코드

Line 76 : vReversSave를 1번값부터 저장시킨 vLengthMin1만큼 잘라 vReversSave에 저장시킨다.

Line 77의 세부코드

Line 77 : ReversSaveLength - 2만큼 잘라 vLengthMin1에 저장 (-2를 시킨 이유는 공백과 ,를 다 제거하기 위함)

Line 78의 세부코드

Line 78 : vReverseSave의 값을 ,기준으로 잘라 List변수에 Split시킨다

Line 79 ~ 86 : List변수만큼 List Loop를 이용해 반복 시킨다

조건의 내용은 List변수의 값이 null이거나 공백일 경우 반복을 건너뛰고 진행, 그렇지 않을경우 파일을 삭제시킨다.