사무직으로 일하다보면 엑셀파일을 다룰 일이 상당히 많습니다. 여기저기 흩어진 파일들을 병합하다보면 시트 단위로 병합할 일도 생기고, 행/열 단위로 데이터를 적층식으로 쌓아서 병합할 일도 생깁니다. 또 쌓다보면 중간중간 섞여있는 빈 행/열 정리도 필요하구요.

그래서 필요하다 생각하는 기능들을 모아서 파이썬으로 만들었습니다. 경험과 지식이 부족한 채로 제작한 거라 다른분들이 만든 프로그램들보다 용량이 크면서 동작은 조금 느립니다..ㅜ

다운로드는 GitHub 레포지토리 에서 가능합니다. 바이브 코딩 으로 만들었습니다.

[다운로드]

편의를 위한 단일파일(onefile)버전과 그렇지 않은 버전이 있는데, 실행속도와 동작속도 모두 단일파일이 조금 더 느립니다. 당연하게도 바이러스는 없지만, 프로그램 형태로 처음 배포하다 보니 오탐 당할 수도 있습니다. 소스코드는 GitHub에 공개되어 있으니 안심하셔도 됩니다.

사용설명서

기본 동작

사용중인 엑셀을 닫고 실행하셔야 합니다.

실행하면 아래와 같은 창이 나타납니다.

엑셀 파일 병합 프로그램의 기본 메인 화면

기본적인 기능 및 사용 방법은 아래와 같습니다.

  • 파일 목록 : 드래그 앤 드롭 혹은 Ctrl + O로 엑셀 파일 추가
  • 시트 목록 : 파일 목록에서 엑셀 파일 클릭 시 해당 파일의 시트 나열
  • 병합 목록 : 시트 목록에서 병합하려는 시트를 선택하여 병합
  • 모든 시트(A) : 모든 엑셀 파일의 모든 시트를 알아서 일괄로 추가하여 병합
  • 특정 시트(S) : 숫자 입력 시 각 엑셀 파일의 n번째 시트만 병합(없을 경우 제외)
  • 직접 선택(D) : 각 엑셀 파일을 하나씩 클릭해 원하는 시트를 직접 이동시켜 병합
  • 값 복사(V) : 시트 내부의 수식을 무시하고 값만 복사
  • 경로 지정(Ctrl+S) : 병합결과파일을 저장할 경로(xlsx)
  • 작업 시작(F5) : 병합 작업 시작. 작업 완료 후 자동으로 파일이 저장된 위치 열림

원하는 엑셀들을 드래그 앤 드롭으로 편하게 추가한 뒤 병합하고 싶은 시트를 골라 병합하면 되며, 드래그 앤 드롭으로 순서를 정렬할 수 있습니다.

각 파일을 선택해서 시트를 넣는 것이 번거로우신 분들은 모든 시트를 한 번 클릭 후 직접 선택을 클릭하면 모든 시트가 일괄 추가된 상태에서 순서 정렬이나 편집이 가능합니다.

기본적으로 엑셀이 정상적으로 설치되어 있는 윈도우 환경에서는 대부분의 서식과 수식을 보존할 수 있습니다.

병합 프로그램에 엑셀 및 CSV 파일들이 추가된 목록 화면 목록에서 추가된 파일들의 순서를 변경하여 정렬한 화면

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

병합된 결과를 저장할 출력 엑셀 파일의 이름과 경로 지정 화면
excel merger 5
파일 병합 진행 상태를 표시해주는 프로그레스 바 화면
excel merger 6

값복사 X(좌) / 값복사 O(우)

‘특정 시트’ 옵션은 문서 인쇄할 때 일부분 인쇄하는 것과 동일한 옵션입니다.

예를 들어, 아래와 같이 시트를 보유한 파일들이 있을 경우,

파일 병합 작업이 성공적으로 완료되었음을 알리는 안내창

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

병합 결과를 다중 시트 또는 단일 시트로 합칠지 선택하는 화면

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

기존 파일에 덮어쓸 경우 시트 이름이 어떻게 변경되는지 보여주는 화면

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

출력되는 엑셀 파일에 비밀번호 암호화를 설정하는 화면

환경설정(옵션)

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

비밀번호 설정 후 파일이 암호화되어 저장되었음을 알리는 로그 화면 암호화된 엑셀 출력 파일을 열 때 나타나는 비밀번호 입력창
  • 원본파일명_원본시트명(Q) : 시트병합 시 개별시트명의 규칙을 원본파일_원본시트명으로 저장
  • 원본시트명(W) : 시트병합 시 개별시트명을 파일명 없이 시트명만 사용 (중복시 괄호숫자 붙음)
  • 원본파일명(E) : 시트병합 시 개별시트명을 시트명 없이 파일명만 사용 (중복시 괄호숫자_붙음)

이 메뉴는 병합파일 속 개별시트이름을 정합니다.

아래의 예시 파일들은 모두 내부에 ‘Sheet1’이라는 워크시트를 한 개씩 보유한 엑셀파일입니다.

비밀번호 입력 후 정상적으로 열린 병합된 엑셀 파일 화면

이 파일들에 대해 각각 위 3가지 옵션을 적용하면 아래와 같이 시트이름이 정해집니다.

서식과 수식을 유지하는 고품질 모드를 활성화한 설정 화면
원본파일명_원본시트명 선택 시
프로그램의 설정이 저장되는 환경설정 파일이 생성된 폴더 화면
원본파일명 선택 시
우분투 환경에서의 파일 병합 시 서식 유지 여부를 정리한 표
원본시트명 선택 시
  • 시트(A) : 추가된 시트들을 한 파일에 모으는 방식
  • 세로(S) : 추가된 시트들의 데이터를 행 단위로 병합하여 세로로 길게 쌓는 방식(가로방식보다 시간 소요 김)
  • 가로(D) : 추가된 시트들의 데이터를 열 단위로 병합하여 가로로 길게 쌓는 방식

데이터의 병합 방식을 정합니다. 시트 병합은 일반적으로 많이 찾는 방식입니다. 병합하려는 모든 시트를 하나의 파일에 합쳐놓습니다.

Excel Merger의 환경설정(옵션) 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정
시트 병합 시

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

Excel Merger의 환경설정(옵션) 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정
세로 병합 시
Excel Merger의 환경설정(옵션) 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정
가로 병합 시
  • 데이터 정리 - 행(Z) : 작업 완료 후 입력된 숫자 이상 빈 행이 있을 경우 해당 행을 삭제
  • 데이터 정리 - 열(X) : 작업 완료 후 입력된 숫자 이상 빈 열이 있을 경우 해당 열을 삭제

Sheet Trim기능입니다. 시트 병합 및 값복사 작업을 모두 수행한 후 정해진 숫자만큼의 빈 행/열을 모두 찾아내 제거합니다. 예를 들어 아래와 같은 시트가 있을 경우,

Excel Merger의 환경설정(옵션) 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정

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

Excel Merger의 환경설정(옵션) 기능을 활용하기 위해 관련 세부 옵션을 조정하고 상태를 점검하는 단계
excel merger 19
Excel Merger의 환경설정(옵션) 기능을 활용하기 위해 관련 세부 옵션을 조정하고 상태를 점검하는 단계
excel merger 20

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

Excel Merger의 환경설정(옵션) 기능을 활용하기 위해 관련 세부 옵션을 조정하고 상태를 점검하는 단계
Excel Merger의 환경설정(옵션) 기능을 활용하기 위해 관련 세부 옵션을 조정하고 상태를 점검하는 단계
excel merger 22
Excel Merger의 환경설정(옵션) 기능을 활용하기 위해 관련 세부 옵션을 조정하고 상태를 점검하는 단계
excel merger 23

데이터 정리(Sheet Trim)기능은 행과 열 동시에 수행 가능합니다.

단, 가로/세로 방향 병합 시, 병합이 이루어진 다음에 Trim을 수행하기 때문에, 생각한 대로 동작되지 않을 수 있습니다.

예를 들어서, 아래 왼쪽의 예제 시트를 1줄 이상의 빈 행과 열에 대해 모두 Trim을 진행한다면, 아래 처럼 수행됩니다.

Excel Merger의 환경설정(옵션) 기능을 활용하기 위해 관련 세부 옵션을 조정하고 상태를 점검하는 단계
수행 전
Excel Merger의 환경설정(옵션) 기능을 활용하기 위해 관련 세부 옵션을 조정하고 상태를 점검하는 단계
수행 후

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

Excel Merger의 환경설정(옵션) 기능을 활용하기 위해 관련 세부 옵션을 조정하고 상태를 점검하는 단계 Excel Merger의 환경설정(옵션) 기능을 활용하기 위해 관련 세부 옵션을 조정하고 상태를 점검하는 단계

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

Excel Merger의 환경설정(옵션) 기능을 활용하기 위해 관련 세부 옵션을 조정하고 상태를 점검하는 단계

위와 같은 상황에서 여백을 제거하고 싶다면

  1. 먼저 ‘시트’병합으로 Trim을 수행해서 xlsx파일을 하나 만든 후,
  2. xlsx파일을 다시 가져와 내부의 시트들을 가로/세로모드로 다시 병합하면 됩니다.

전역 비밀번호 설정

일하면서 다루게 될 엑셀파일중엔 암호가 걸린 파일들도 있습니다. 이것들을 일일히 암호를 풀고 사용하라고 하기엔 너무 실용성이 떨어져서 만든 옵션입니다.

제 경험상, 암호가 걸린 파일들 중의 절반은 특정 프로그램들이 데이터를 엑셀로 저장할 때 설정된 것들이 많습니다. 그래서 비밀번호가 동일하죠. 전역 비밀번호(Global Password)는 이럴 때 사용합니다.

옵션 - 전역 비밀번호 설정 혹은 Alt + P를 통해 작은 창을 호출한 뒤 자주 사용되는 비밀번호를 입력합니다.

Excel Merger의 전역 비밀번호 설정 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정 Excel Merger의 전역 비밀번호 설정 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정

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

Excel Merger의 전역 비밀번호 설정 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정

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

Excel Merger의 전역 비밀번호 설정 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정 Excel Merger의 전역 비밀번호 설정 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정

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

Excel Merger의 전역 비밀번호 설정 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정

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

Excel Merger의 전역 비밀번호 설정 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정

출력파일 암호화 설정

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

Excel Merger의 출력파일 암호화 설정 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정 Excel Merger의 출력파일 암호화 설정 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정 Excel Merger의 출력파일 암호화 설정 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정

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

Excel Merger의 출력파일 암호화 설정 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정

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

Excel Merger의 출력파일 암호화 설정 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정

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

Excel Merger의 출력파일 암호화 설정 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정

고품질 모드 활성화

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

Excel Merger의 고품질 모드 활성화 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정

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

Excel Merger의 고품질 모드 활성화 기능을 활용하기 위해 필요한 정보나 값을 해당 항목에 직접 입력하는 과정

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

Excel Merger의 고품질 모드 활성화 기능을 활용하기 위해 관련 세부 옵션을 조정하고 상태를 점검하는 단계
예시: 우분투

unotools라이브러리를 사용해 LibreOffice를 조작할 수 있다고 알고 있는데, 현재까진 계획에 없습니다.

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

Excel Merger의 고품질 모드 활성화 기능을 활용하기 위해 관련 세부 옵션을 조정하고 상태를 점검하는 단계
예시: 우분투에서의 xls병합

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

Excel Merger의 고품질 모드 활성화 기능을 활용하기 위해 관련 세부 옵션을 조정하고 상태를 점검하는 단계
우분투에서의 xlsm병합

서식과 수식 데이터가 유지되는 경우를 표로 정리하면 이렇습니다.

확장자윈도우_고품질 모드그 외 모드
xlsOX
xlsxOO
xlsmOO
xlsbOX
csvXX

설정 초기화

실행 파일과 동일한 폴더에 생성된 config.ini는 설정한 옵션값을 그대로(password는 암호화) 저장합니다.

Excel Merger의 설정 초기화 기능을 활용하기 위해 발생한 오류나 에러 메시지를 확인하고 해결책을 적용하는 과정 Excel Merger의 설정 초기화 기능을 활용하기 위해 발생한 오류나 에러 메시지를 확인하고 해결책을 적용하는 과정

해당 파일을 삭제해 주시면 됩니다.

문제 해결(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 처리로직 누락되어 추가

2026/01/28 - v1.3.0

  • 시트 이름 규칙에 ‘원본파일명’만 사용 기능 추가
  • 원본시트명 사용 시 중복시트 이름 규칙 수정 (기존 : Sheet1, Sheet2, Sheet3, … -> Sheet1, Sheet1 (2), Sheet1 (3), …)