사무직으로 일하다보면 엑셀파일을 다룰 일이 상당히 많습니다. 여기저기 흩어진 파일들을 병합하다보면 시트 단위로 병합할 일도 생기고, 행/열 단위로 데이터를 적층식으로 쌓아서 병합할 일도 생깁니다. 또 쌓다보면 중간중간 섞여있는 빈 행/열 정리도 필요하구요.
그래서 필요하다 생각하는 기능들을 모아서 파이썬으로 만들었습니다. 경험과 지식이 부족한 채로 제작한 거라 다른분들이 만든 프로그램들보다 용량이 크면서 동작은 조금 느립니다..ㅜ
다운로드는 GitHub 레포지토리 에서 가능합니다. 바이브 코딩으로 만들었습니다.
편의를 위한 단일파일(onefile)버전과 그렇지 않은 버전이 있는데, 실행속도와 동작속도 모두 단일파일이 조금 더 느립니다. 당연하게도 바이러스는 없지만, 프로그램 형태로 처음 배포하다 보니 오탐 당할 수도 있습니다. 소스코드는 GitHub에 공개되어 있으니 안심하셔도 됩니다.
사용설명서
기본 동작
사용중인 엑셀을 닫고 실행하셔야 합니다.
실행하면 아래와 같은 창이 나타납니다.

기본적인 기능 및 사용 방법은 아래와 같습니다.
- 파일 목록 : 드래그 앤 드롭 혹은 Ctrl + O로 엑셀 파일 추가
- 시트 목록 : 파일 목록에서 엑셀 파일 클릭 시 해당 파일의 시트 나열
- 병합 목록 : 시트 목록에서 병합하려는 시트를 선택하여 병합
- 모든 시트(A) : 모든 엑셀 파일의 모든 시트를 알아서 일괄로 추가하여 병합
- 특정 시트(S) : 숫자 입력 시 각 엑셀 파일의 n번째 시트만 병합(없을 경우 제외)
- 직접 선택(D) : 각 엑셀 파일을 하나씩 클릭해 원하는 시트를 직접 이동시켜 병합
- 값 복사(V) : 시트 내부의 수식을 무시하고 값만 복사
- 경로 지정(Ctrl+S) : 병합결과파일을 저장할 경로(xlsx)
- 작업 시작(F5) : 병합 작업 시작. 작업 완료 후 자동으로 파일이 저장된 위치 열림
원하는 엑셀들을 드래그 앤 드롭으로 편하게 추가한 뒤 병합하고 싶은 시트를 골라 병합하면 되며, 드래그 앤 드롭으로 순서를 정렬할 수 있습니다.
각 파일을 선택해서 시트를 넣는 것이 번거로우신 분들은 모든 시트를 한 번 클릭 후 직접 선택을 클릭하면 모든 시트가 일괄 추가된 상태에서 순서 정렬이나 편집이 가능합니다.
기본적으로 엑셀이 정상적으로 설치되어 있는 윈도우 환경에서는 대부분의 서식과 수식을 보존할 수 있습니다.


만일, 값 복사를 선택했을 경우, 모든 병합 작업이 끝난 뒤 자체적으로 문서 전체에 값 복사 작업을 수행합니다. 그래서 서식을 유지한 채로 수식만 값으로 변환할 수 있습니다.


‘특정 시트’ 옵션은 문서 인쇄할 때 일부분 인쇄하는 것과 동일한 옵션입니다.
예를 들어, 아래와 같이 시트를 보유한 파일들이 있을 경우,

‘3’을 입력할 경우 3번째 시트만 골라집니다.

1,2를 입력할 경우 1,2번째 시트가 골라지고,

5를 입력할 경우 딱 한 개 있는 5번째 시트가 골라집니다.

환경설정(옵션)
Alt+O 혹은 옵션 – 환경설정에서 옵션창을 호출할 수 있습니다.


- 원본파일명_원본시트명(Q) : 시트병합 시 개별시트명의 규칙을 원본파일_원본시트명으로 저장
- 원본시트명(W) : 시트병합 시 개별시트명을 파일명 없이 시트명만 사용 (중복시 괄호숫자 붙음)
이 메뉴는 병합파일 속 개별시트이름을 정합니다.


- 시트(A) : 추가된 시트들을 한 파일에 모으는 방식
- 세로(S) : 추가된 시트들의 데이터를 행 단위로 병합하여 세로로 길게 쌓는 방식(가로방식보다 시간 소요 김)
- 가로(D) : 추가된 시트들의 데이터를 열 단위로 병합하여 가로로 길게 쌓는 방식
데이터의 병합 방식을 정합니다. 시트 병합은 일반적으로 많이 찾는 방식입니다. 병합하려는 모든 시트를 하나의 파일에 합쳐놓습니다.

가로 및 세로의 축 변환 방식은 동일한 데이터를 적층식으로 쌓을 때 적합합니다.


- 데이터 정리 – 행(Z) : 작업 완료 후 입력된 숫자 이상 빈 행이 있을 경우 해당 행을 삭제
- 데이터 정리 – 열(X) : 작업 완료 후 입력된 숫자 이상 빈 열이 있을 경우 해당 열을 삭제
Sheet Trim기능입니다. 시트 병합 및 값복사 작업을 모두 수행한 후 정해진 숫자만큼의 빈 행/열을 모두 찾아내 제거합니다. 예를 들어 아래와 같은 시트가 있을 경우,

2행 이상 Trim 시, 아래와 같이 빈 행이 삭제됩니다.


아래와 같은 시트에 대해 1열 이상 Trim 시, 가운데의 열이 삭제됩니다.



데이터 정리(Sheet Trim)기능은 행과 열 동시에 수행 가능합니다.
단, 가로/세로 방향 병합 시, 병합이 이루어진 다음에 Trim을 수행하기 때문에, 생각한 대로 동작되지 않을 수 있습니다.
예를 들어서, 아래 왼쪽의 예제 시트를 1줄 이상의 빈 행과 열에 대해 모두 Trim을 진행한다면, 아래 처럼 수행됩니다.


그러나, 아래와 같은 시트와 ‘가로’ 병합 모드 + 1줄 이상 Trim을 진행하면,


아래처럼 1~20의 숫자가 있는 행은 지워지지 않습니다.

위와 같은 상황에서 여백을 제거하고 싶다면
- 먼저 ‘시트’병합으로 Trim을 수행해서 xlsx파일을 하나 만든 후,
- xlsx파일을 다시 가져와 내부의 시트들을 가로/세로모드로 다시 병합하면 됩니다.
전역 비밀번호 설정
일하면서 다루게 될 엑셀파일중엔 암호가 걸린 파일들도 있습니다. 이것들을 일일히 암호를 풀고 사용하라고 하기엔 너무 실용성이 떨어져서 만든 옵션입니다.
제 경험상, 암호가 걸린 파일들 중의 절반은 특정 프로그램들이 데이터를 엑셀로 저장할 때 설정된 것들이 많습니다. 그래서 비밀번호가 동일하죠. 전역 비밀번호(Global Password)는 이럴 때 사용합니다.
옵션 – 전역 비밀번호 설정 혹은 Alt + P를 통해 작은 창을 호출한 뒤 자주 사용되는 비밀번호를 입력합니다.


입력 시엔 평문으로 보이지만, OK 이후 다시 확인하시면 가려져 있습니다. 그리고 설정과 동시에 로그 창에 전역 비밀번호 설정이 업데이트되었음을 알려 줍니다.

테스트로 동일한 비밀번호를 설정한 파일을 올려놓으면 알아서 전역 비밀번호로 파일을 열고 내부 시트 목록을 읽습니다.


전역 비밀번호가 설정되어 있지 않거나, 전역 비밀번호로 열 수 없는 경우, 추가로 암호를 묻습니다.

입력한 암호를 계속 사용 버튼을 체크하고 비번을 입력할 경우 전역 비밀번호를 변경하도록 되어 있습니다. 전역 비밀번호가 변경되어도 이미 열기 성공한 파일은 목록에서 제거되기 전까지 계속 암호 해제 상태입니다.

출력파일 암호화 설정
저장할 파일의 암호를 자동으로 설정해주는 옵션입니다. 전역 비밀번호와 마찬가지로 입력시에만 평문이고, 설정 후엔 가려집니다.



암호화 설정을 완료하면 로그 창에 관련 메세지를 출력합니다.

출력파일을 열어보면 암호를 요구하는 것을 알 수 있고,

암호 입력 시 정상적으로 열리는 것을 확인하실 수 있습니다.

고품질 모드 활성화
이름을 뭘로 정할 지 고민하다가 거만하게 ‘고품질 모드’라고 정했습니다.

토글 형식이고 Ctrl+U로 키고 끌 수 있습니다.

이 옵션은 pywin32(win32com)을 활성화하여 직접 엑셀을 이용해 서식을 잃지 않고 복사할 수 있는 옵션입니다. 공식 MS오피스가 없는 리눅스나 win32com을 지원하지 않는 맥에서는 사용할 수 없는 옵션이라 비활성화됩니다(맥버전은 컴파일 하지도 않았지만).

unotools라이브러리를 사용해 LibreOffice를 조작할 수 있다고 알고 있는데, 현재까진 계획에 없습니다.
이 옵션을 끄게 될 경우 win32com을 사용하지 않고 파이썬 라이브러리인 openpyxl과 xlrd를 이용해서 엑셀 파일을 열게 됩니다. 그래서 예전 엑셀파일 확장자(xls)의 경우 xlrd로 열고 openpyxl을 위한 xlsx로 변환하며 서식 및 수식을 잃습니다(xlrd 라이브러리는 수식인식 불가). 그 외 바이너리 형식인 xlsb 역시 pyxlsb로 여는 과정에서 서식 및 수식을 잃습니다.

대신 속도가 정말 빠르다는 장점이 있으며, 최신 확장자(xlsx, xlsm)의 경우에는 서식과 수식을 모두 유지할 수 있습니다.

서식과 수식 데이터가 유지되는 경우를 표로 정리하면 이렇습니다.
| 확장자 | 윈도우_고품질 모드 | 그 외 모드 |
|---|---|---|
| xls | O | X |
| xlsx | O | O |
| xlsm | O | O |
| xlsb | O | X |
| csv | X | X |
설정 초기화
실행 파일과 동일한 폴더에 생성된 config.ini는 설정한 옵션값을 그대로(password는 암호화) 저장합니다.


해당 파일을 삭제해 주시면 됩니다.
문제 해결(FAQ)
병합 오류: ‘MainWindow’ object has no attribute ‘main_window’
사용중인 엑셀을 모두 닫고 다시 시도해 주세요.
변경이력
2025/10/30 – v1.0(초도배포)
2025/10/31 – v1.1~1.2
- none-win32환경에서의 디버그 로그 출력 추가
- 작업 중단으로 취소된 파일 추가 시 비밀번호 다시 묻도록 수정
- win32 동적 바인딩으로 안정성 향상
- UI 크기고정
- 단일 실행파일 추가
- SheetTrim기능 중 X단축키 누락 fix
- CSV, XLSM, XLSB 지원 추가
- CSV 암호 검사 생략
2025/11/03 – v1.2.1~v1.2.2
- 프로세스 응답 속도에 따라 빈 엑셀 파일 저장되는 문제 fix
- xlsb와 csv 처리로직 누락되어 추가

