본문 바로가기
코딩 연습

엑셀 시트 분리 저장 - 엑셀 파일의 시트를 분리하여 저장하기

by good4me 2022. 9. 25.

goodthings4me.tistory.com

엑셀을 사용하다 보면 엑셀 시트를 분리해서 저장해야 할 때가 있다. 최근에도 이런 경우가 발생하여 구글링 후 엑셀 시트 분리 업무를 수행하고 내친김에 다른 사람들도 사용할 수 있도록 파이썬 tkinter로 프로그램으로 만들어 보았다. 

 

 

Excel Sheets 분리 저장하는 프로그램(with   파이썬 Tkinter)

 

탐색기에 있는 엑셀 파일
탐색기에 있는 엑셀 파일

 

엑셀 파일 시트 5개
엑셀 파일 시트 5개

 

 

※ 프로그램 다운로드(네이버 MYBOX에서 공유) : ExcelSeparateSheets.zip

 

▶ 프래그램을 실행하면 다음과 같이 초기 화면이 보인다.

  1. 찾아보기 : 엑셀 파일이 있는 폴더를 선택한다. (프로그램이 있는 최상위 디렉터리가 열린다)
  2. 실행하기 : 프로그램 실행 버튼
  3. 상태 변경 순서 : 실행전 → 실행 중 → Sheet "OOO" 분리 저장 중 → 실행 완료
  4. 실행 결과 확인 : 엑셀 파일이 있는 폴더에 분리된 시트 이름으로 파일이 생성됨

 

 찾아보기 버튼 클릭한 경우

폴더 및 엑셀 파일 선택
폴더 및 엑셀 파일 선택

 

엑셀 파일 시트 분리 실행하기

실행하기 클릭
실행하기 클릭

 

엑셀 파일 시트 분리 저장 중
엑셀 파일 시트 분리 저장 중

 

※ 아래는 엑셀 파일의 시트를 분리하는 파이썬 소스 코드임

 

[엑셀 파일 시트 분리 부분 소스 코드]

from win32com import client

xl = client.Dispatch('Excel.Application')  # 엑셀 프로그램 불러오기
xl.Visible = False  # background 작업

file_path = 'D:\\Python\\python_dev\\excel\\'  # 또는 r'D:\Python\python_dev\excel\\'
# path는 절대경로 방식으로 할 것. 상대경로 안됨.
file_name = '_강원도.xlsx'

wb = xl.Workbooks.Open(file_path + file_name)  # 원본 엑셀 가져오기
sheets_names = [sheet.Name for sheet in wb.Sheets]  # 엑셀 시트명을 리스트로 만들기
print(sheets_names)

for sheet in sheets_names:
    print(f'시트: {sheet}')
    wb2 = xl.Workbooks.Add()
    wb.Worksheets(sheet).Copy(new_wb.Worksheets('Sheet1'))
    # wb2.Worksheets('Sheet1').Delete()  # 디폴트 시트인 Sheets1 삭제 필요 시 사용
    wb2.SaveAs(file_path + sheet + '.xlsx')

xl.Quit()
  • PC에 설치된 엑셀 응용프로그램 열고(client.Dispatch)
  • 지정한 폴더(절대 경로)에서 지정한 엑셀 파일을 불러온 후 (xl.Workbooks.Open())
  • 엑셀 시트수만큼 for문으로 새로운 엑셀 파일을 만들고 (xl.Workbooks.Add())
  • 기존 엑셀 시트들을 새로운 엑셀 파일에 복사(wb.Worksheets(sheet).Copy(new_wb.Worksheets('Sheet1')))한 후 저장한다. 

 

good4me.co.kr

 

[실행 결과]

엑셀 시트 분리 저장 결과
엑셀 시트 분리 저장 결과

 

 

분리 저장된 엑셀 시트 내용 확인
분리 저장된 엑셀 시트 내용 확인

 

※ 프로그램 활용 시 참고사항

  • 만일 분리하는 시트명이 이미 있을 경우(엑셀 파일명) 분리 저장이 안 됨("OOOO" 엑셀 파일명이 존재합니다. 메시지 출력됨)
  • 또한, 엑셀 파일에 시트가 1개인 경우 (엑셀 시트 1개 (분리 대상 아님..!!) 메시지 출력됨)

 

 

댓글