칼퇴를 부르는 파이썬: 엑셀 데이터 취합부터 이메일 발송까지 10분 만에 자동화하기

업무 효율을 극대화하는 파이썬 자동화의 힘

매주 혹은 매달 돌아오는 보고서 작성 기간, 수십 개의 부서나 업체에서 보낸 엑셀 파일을 하나하나 열어 복사하고 붙여넣는 작업에 많은 시간을 허비하고 계시지 않나요? 취합된 최종 파일을 다시 이메일에 첨부해 여러 담당자에게 발송하는 일까지 더해지면 어느새 야근은 일상이 됩니다.

이번 글에서는 업무용 PC에 파이썬(Python)을 설치하고, 단 몇 줄의 코드로 여러 개의 엑셀 데이터를 자동으로 취합한 뒤 이메일로 발송하는 전 과정을 10분 만에 구축하는 방법을 단계별로 알아보겠습니다.

1. 환경 설정 및 필요한 라이브러리 설치

파이썬으로 엑셀을 다루고 이메일을 보내려면 몇 가지 라이브러리가 필요합니다. 엑셀 데이터 처리에 특화된 pandasopenpyxl을 설치해 줍니다. 이메일 전송은 파이썬 내장 라이브러리인 smtplibemail을 사용하므로 추가 설치가 필요 없습니다.

칼퇴를 부르는 파이썬: 엑셀 데이터 취합부터 이메일 발송까지 10분 만에 자동화하기 관련 이미지 1
pip install pandas openpyxl

2. 1단계: 폴더 내 여러 엑셀 파일 하나로 취합하기

먼저 특정 폴더 내에 흩어져 있는 여러 개의 엑셀 파일(예: 지점별 매출 현황)을 불러와 하나의 시트로 합치는 코드를 작성합니다. glob 라이브러리를 사용하면 폴더 내의 모든 엑셀 파일을 간편하게 검색할 수 있습니다.

import pandas as pd
import glob
import os

# 1. 엑셀 파일이 저장된 폴더 경로 지정
folder_path = './excel_files/'
all_files = glob.glob(os.path.join(folder_path, '*.xlsx'))

# 2. 모든 엑셀 파일을 읽어와 리스트에 저장
df_list = []
for file in all_files:
    df = pd.read_excel(file)
    df_list.append(df)

# 3. 데이터프레임 하나로 병합
merged_df = pd.concat(df_list, ignore_index=True)

# 4. 취합된 결과를 새 파일로 저장
output_path = './final_report.xlsx'
merged_df.to_excel(output_path, index=False)
print("엑셀 데이터 취합 완료!")

3. 2단계: 취합된 보고서 자동으로 이메일 발송하기

이제 생성된 final_report.xlsx 파일을 첨부하여 담당자에게 자동으로 이메일을 보내는 스크립트를 작성합니다. 보안을 위해 Gmail이나 네이버 메일을 발송용 계정으로 사용할 때는 ‘앱 비밀번호(App Password)’를 미리 발급받아야 합니다.

칼퇴를 부르는 파이썬: 엑셀 데이터 취합부터 이메일 발송까지 10분 만에 자동화하기 관련 이미지 2
import smtplib
from email.encoders import encode_base64
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# 이메일 설정 정보
SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587
SENDER_EMAIL = 'your_email@gmail.com'
SENDER_PASSWORD = 'your_app_password' # 구글 앱 비밀번호
RECEIVER_EMAIL = 'target_email@naver.com'

# 메일 객체 생성
message = MIMEMultipart()
message['From'] = SENDER_EMAIL
message['To'] = RECEIVER_EMAIL
message['Subject'] = '[자동 발송] 금주 업무 데이터 취합 보고서'

# 본문 내용 작성
body = '안녕하세요, 자동화 시스템을 통해 취합된 금주 보고서를 첨부해 드립니다. 업무에 참고하시기 바랍니다.'
message.attach(MIMEText(body, 'plain'))

# 파일 첨부
filename = 'final_report.xlsx'
filepath = './final_report.xlsx'

with open(filepath, 'rb') as attachment:
    part = MIMEBase('application', 'octet-stream')
    part.set_payload(attachment.read())
    encode_base64(part)
    part.add_header('Content-Disposition', f'attachment; filename={filename}')
    message.attach(part)

# 이메일 전송 실행
try:
    server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
    server.starttls() # 보안 연결
    server.login(SENDER_EMAIL, SENDER_PASSWORD)
    server.sendmail(SENDER_EMAIL, RECEIVER_EMAIL, message.as_string())
    server.quit()
    print("이메일 발송 성공!")
except Exception as e:
    print(f"이메일 발송 중 오류 발생: {e}")

4. 업무 생산성 향상을 위한 최종 조언

위의 두 코드를 하나로 합쳐서 실행 가능한 파이썬 파일(예: auto_run.py)로 만들어두면, 단 한 번의 실행으로 데이터 취합부터 메일 전송까지 순식간에 끝낼 수 있습니다. 윈도우의 ‘작업 스케줄러’나 맥의 ‘Crontab’을 활용하면 매일 아침 특정 시간대에 자동으로 이 프로그램이 작동하도록 예약할 수도 있습니다.

단순 반복 업무는 컴퓨터에게 맡기고, 여러분은 더욱 중요한 기획과 의사결정에 집중해 보세요. 칼퇴근은 멀리 있지 않습니다!

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤