goodthings4me.tistory.com
엑셀을 사용하다 보면 엑셀 시트를 분리해서 저장해야 할 때가 있다. 최근에도 이런 경우가 발생하여 구글링 후 엑셀 시트 분리 업무를 수행하고 내친김에 다른 사람들도 사용할 수 있도록 파이썬 tkinter로 프로그램으로 만들어 보았다.
Excel Sheets 분리 저장하는 프로그램(with 파이썬 Tkinter)
※ 프로그램 다운로드(네이버 MYBOX에서 공유) : ExcelSeparateSheets.zip
▶ 프래그램을 실행하면 다음과 같이 초기 화면이 보인다.
- 찾아보기 : 엑셀 파일이 있는 폴더를 선택한다. (프로그램이 있는 최상위 디렉터리가 열린다)
- 실행하기 : 프로그램 실행 버튼
- 상태 변경 순서 : 실행전 → 실행 중 → Sheet "OOO" 분리 저장 중 → 실행 완료
- 실행 결과 확인 : 엑셀 파일이 있는 폴더에 분리된 시트 이름으로 파일이 생성됨
▶ 찾아보기 버튼 클릭한 경우
▶ 엑셀 파일 시트 분리 실행하기
※ 아래는 엑셀 파일의 시트를 분리하는 파이썬 소스 코드임
[엑셀 파일 시트 분리 부분 소스 코드]
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')))한 후 저장한다.
[실행 결과]
※ 프로그램 활용 시 참고사항
- 만일 분리하는 시트명이 이미 있을 경우(엑셀 파일명) 분리 저장이 안 됨("OOOO" 엑셀 파일명이 존재합니다. 메시지 출력됨)
- 또한, 엑셀 파일에 시트가 1개인 경우 (엑셀 시트 1개 (분리 대상 아님..!!) 메시지 출력됨)
'코딩 연습' 카테고리의 다른 글
엑셀 암호 해제 방법 - 파이썬으로 엑셀 암호 제거 프로그램 만들기 (0) | 2022.10.13 |
---|---|
Pandas - 데이터 분석용 파이썬 라이브러리 "판다스" #1 (0) | 2022.10.08 |
유튜브 음원 추출 다운로드(유뷰브 음악 추출하는 2가지 방법) (0) | 2022.09.19 |
유뷰트 영상 다운로드 - 파이썬 tkinter (0) | 2022.09.13 |
리눅스 가상서버 환경에서 장고(django) 서버 구동을 위한 nginx, gunicorn 설치해보기 (0) | 2022.08.21 |
댓글