매주 같은 작업, 파이썬으로 끝낼 수 있습니다
매달 말일, 같은 형식의 보고서를 만들고 있나요? 여러 엑셀 파일에서 데이터를 하나하나 복사해 붙여넣고 있나요?
이런 반복 작업은 파이썬 코드 몇 줄로 자동화할 수 있습니다. 프로그래밍 경험이 없어도 괜찮습니다. 이 글에서 소개하는 3가지 코드는 복사해서 파일명만 바꾸면 바로 쓸 수 있습니다.
왜 파이썬으로 엑셀을 자동화하나요?
엑셀에도 매크로(VBA)가 있습니다. 그런데 왜 파이썬을 쓸까요?
- 배우기 쉽습니다: 파이썬은 문법이 단순해서 비개발자도 빠르게 익힐 수 있습니다.
- 응용 범위가 넓습니다: 엑셀뿐 아니라 이메일 발송, 웹 크롤링, 데이터 분석까지 확장됩니다.
- 회사 내부망에서도 동작합니다: 인터넷 없이도 로컬에서 완전히 실행됩니다.
- 무료입니다: 별도 라이선스 없이 사용할 수 있습니다.
시작 전 준비물
1. 파이썬 설치
파이썬 공식 사이트(python.org)에서 최신 버전을 다운로드해 설치합니다. 설치 시 "Add Python to PATH" 옵션을 반드시 체크하세요.
설치 확인은 명령 프롬프트(cmd)를 열고 아래 명령을 입력합니다.
python --version버전 번호가 출력되면 설치 성공입니다.
2. openpyxl 설치
파이썬에서 엑셀 파일을 다루는 라이브러리입니다. 명령 프롬프트에 아래 명령을 입력합니다.
pip install openpyxl자동화 코드 3가지
코드 1 — 엑셀 파일 읽고 데이터 출력하기
가장 기본입니다. 엑셀 파일을 열어 내용을 읽어오는 코드입니다.
import openpyxl
# 엑셀 파일 열기
wb = openpyxl.load_workbook('데이터.xlsx')
ws = wb.active # 첫 번째 시트 선택
# 모든 행 읽기
for row in ws.iter_rows(values_only=True):
print(row)
이렇게 활용하세요: 여러 부서에서 받은 엑셀 파일들을 한꺼번에 읽어 원하는 데이터만 추출할 때 씁니다. 예를 들어 100개 파일에서 특정 열의 합계를 구할 때 이 코드를 반복 실행하면 됩니다.
코드 2 — 데이터를 새 엑셀 파일로 저장하기
읽어온 데이터를 가공해서 새 파일로 저장합니다.
import openpyxl
# 새 엑셀 파일 만들기
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "정리본"
# 헤더 작성
ws.append(["이름", "부서", "매출액"])
# 데이터 입력 (실제로는 다른 파일에서 읽어온 데이터를 넣습니다)
data = [
("김철수", "영업팀", 5200000),
("이영희", "마케팅팀", 3800000),
("박민준", "개발팀", 4100000),
]
for row in data:
ws.append(row)
# 파일 저장
wb.save("정리본.xlsx")
print("저장 완료!")
이렇게 활용하세요: 여러 시트나 파일에 흩어진 데이터를 하나의 정리된 파일로 합칠 때 활용합니다.
코드 3 — 여러 엑셀 파일을 하나로 합치기 (보고서 자동화 핵심)
매월 각 팀에서 받은 파일을 하나로 합치는 작업에 쓸 수 있습니다.
import openpyxl
import os
# 합칠 파일들이 있는 폴더 경로
folder_path = "C:/업무/월간보고"
# 결과를 저장할 새 파일
result_wb = openpyxl.Workbook()
result_ws = result_wb.active
result_ws.title = "통합보고"
# 헤더 한 번만 쓰기
header_written = False
# 폴더 안의 xlsx 파일 전부 읽기
for filename in os.listdir(folder_path):
if filename.endswith(".xlsx"):
file_path = os.path.join(folder_path, filename)
wb = openpyxl.load_workbook(file_path)
ws = wb.active
for i, row in enumerate(ws.iter_rows(values_only=True)):
# 각 파일의 헤더는 첫 파일 것만 씀
if i == 0:
if not header_written:
result_ws.append(row)
header_written = True
else:
result_ws.append(row)
print(f"{filename} 처리 완료")
result_wb.save("통합보고서.xlsx")
print("전체 합치기 완료!")
이렇게 활용하세요: 팀별로 제출된 월간 보고서, 지점별 실적 파일처럼 같은 형식의 엑셀이 여러 개일 때 클릭 한 번으로 합칩니다.
실전 예제 — 주간 업무 보고서 5분 만에 자동화하기
매주 금요일 작성하는 주간 보고서를 자동화하는 예제입니다.
import openpyxl
from datetime import datetime, timedelta
# 이번 주 날짜 범위 계산
today = datetime.today()
monday = today - timedelta(days=today.weekday())
friday = monday + timedelta(days=4)
# 새 보고서 파일 생성
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "주간보고"
# 제목
ws['A1'] = f"주간 업무 보고 ({monday.strftime('%m/%d')} ~ {friday.strftime('%m/%d')})"
# 헤더
ws.append([])
ws.append(["날짜", "업무 내용", "진행 상태", "비고"])
# 이번 주 날짜 자동 채우기
for i in range(5):
day = monday + timedelta(days=i)
ws.append([day.strftime("%Y-%m-%d (%a)"), "", "진행중", ""])
# 컬럼 너비 조정
ws.column_dimensions['A'].width = 22
ws.column_dimensions['B'].width = 40
ws.column_dimensions['C'].width = 12
ws.column_dimensions['D'].width = 20
# 파일명에 날짜 포함해 저장
filename = f"주간보고_{monday.strftime('%Y%m%d')}.xlsx"
wb.save(filename)
print(f"{filename} 생성 완료!")
이 코드를 실행하면 이번 주 날짜가 자동으로 채워진 주간 보고서 템플릿이 생성됩니다. 매주 내용만 채우면 됩니다.
여기서 더 배우려면
openpyxl 하나만 익혀도 엑셀 관련 웬만한 자동화는 해결됩니다. 더 나아가고 싶다면 아래 방향을 추천합니다.
- pandas: 대용량 데이터 처리와 분석에 특화됩니다. openpyxl과 함께 쓰면 강력합니다.
- xlwings: 이미 열려 있는 엑셀 파일을 실시간으로 조작할 수 있습니다. 기존 매크로를 대체하기에 좋습니다.
- schedule 라이브러리: 파이썬 코드를 특정 시간에 자동 실행하게 설정할 수 있습니다. 매일 오전 8시에 보고서를 자동 생성하게 만들 수 있습니다.
정리
| 코드 | 용도 |
|---|---|
| 코드 1 (읽기) | 기존 엑셀 파일에서 데이터 추출 |
| 코드 2 (쓰기) | 가공된 데이터를 새 파일로 저장 |
| 코드 3 (합치기) | 여러 파일을 하나의 통합 보고서로 |
파이썬 엑셀 자동화의 핵심은 거창하게 시작하지 않는 것입니다. 지금 가장 귀찮은 반복 작업 하나를 골라서 그것부터 자동화해 보세요. 한 번 성공하면 다음 자동화는 훨씬 빠르게 만들 수 있습니다.
메타 디스크립션: 파이썬 openpyxl 라이브러리로 엑셀 업무를 자동화하는 방법을 소개합니다. 엑셀 읽기, 데이터 저장, 여러 파일 합치기 3가지 코드를 복사해서 바로 쓸 수 있도록 정리했습니다. 코딩 경험이 없는 직장인도 따라할 수 있습니다.