목표 : python을 통해 excel 다루는 업무 자동화에 대해서 알아보아요.
<시나리오>
타 부서에서 임직원 배포용 인쇄물 표지를 만들어 프린트 하라는 김꼰대 상사 업무지시가
무려 금요일 퇴근 5분전에 내려왔다. 이런... XXX
표지에는 직원이름과 인덱스번호(또는 문서번호)가 찍힌 상태로 프린트를 내일 아침까지 해오라는데,
임직원 수가 무려 1000명, 10000명이 넘는다면...?
어떻게 하면 노가다 없이 후다다닥 처리 할 수 있을까?
<업무 자동화>
구글에서 머신러닝, 딥러닝을 클라우드 환경에서 돌릴 수 있다는 colab 이라는 서비스를
최근에 알게 되었는데... 에디터도 깔끔하고 별도 설치가 필요없어 파이썬 입문자에겐 접근성은 좋을듯 합니다.
colab.research.google.com/
공부도 해볼겸 colab 으로 작성했으니 참고바랍니다.
github.com/mskim8717/python-scripts/blob/master/python_script.ipynb
근데 티스토리나 블로그로 간단하게 퍼올 방법을 모르겠어서 개인용 깃헙에 올려둬요.
python에서 excel 다루는 여러가지 라이브러리가 있는데 'openpyxl'을 써서 해결해보아요.
우선 install부터 시작!
pip install openpyxl
openpyxl 모듈 중에서 load_workbook 모듈을 사용한다.
from openpyxl import load_workbook
표지마다 넣을 직원명단 엑셀을 불러온다.
워크북(wb)으로 먼저 불러오고 시트명을 지정해서 워크시트(ws) 변수에 담아준다.
wb = load_workbook('/content/drive/My Drive/tistory/직원명단.xlsx')
ws = wb['Sheet1']
표지 양식인 소스(source.xlsx)를 불러온다. 그리고 표지마다 직원명단과 인덱스번호가 들어간 최종(dest) 파일로 넣어준다.
new_wb = load_workbook('/content/drive/My Drive/tistory/source.xlsx')
dest = new_wb['Sheet1']
자 이제 for loop 수행하면서
지금은 예제로 10명만 했지만, 100명, 1000명 그 이상
순식간에 표지를 만들어 낸다.
for i in range(2, 12):
dest['F1'] = ws.cell(i, 1).value
dest['C23'] = ws.cell(i, 3).value
new_wb.copy_worksheet(dest)
최종(dest) 파일로 저장되게끔 정리해주면, 오늘 업무 끝.
new_wb.save('/content/drive/My Drive/tistory/dest.xlsx')
new_wb.close()
오늘도 수고하셨습니다.
퇴근합시다.
코드에 사용된 엑셀파일도 첨부로 올려드립니다.
이상 끝.
'SW개발 > python' 카테고리의 다른 글
[python] selenium 활용한 웹사이트 자동 로그인 (2) | 2021.05.27 |
---|---|
[python] datetime 날짜,시간을 다루는 유용한 방법들 (0) | 2021.05.02 |
[python] OCR 테스트 - 카카오 kakao 비전 OCR API (1) (1) | 2021.01.09 |
[python] datetime 날짜 계산 - month (0) | 2021.01.05 |
[python] datetime 날짜 계산 - 일자, 요일 구하기 (0) | 2020.11.08 |