개요 : 2025년 현재, 반복적인 엑셀 작업은 Python으로 자동화할 수 있는 시대입니다. openpyxl, pandas, xlsxwriter 같은 라이브러리를 활용하면 엑셀 함수 작성, 그래프 생성, 조건부 서식 지정, 여러 파일 병합, 이메일 전송 등 복잡한 작업도 몇 줄의 코드로 처리할 수 있습니다. 본문에서는 실무에서 바로 사용할 수 있는 예제를 중심으로 Python 기반 엑셀 자동화 기술을 자세히 소개합니다.
Python의 openpyxl 라이브러리를 이용하면, 엑셀에 SUM, IF 같은 함수를 직접 삽입할 수 있습니다. 반복 계산 작업이나 평가 기준 자동화에 유용합니다.
from openpyxl import Workbook
from openpyxl.styles import Font
wb = Workbook()
ws = wb.active
ws.append(["이름", "국어", "영어", "수학", "총점", "합격여부"])
students = [("홍길동", 90, 85, 95),
("김영희", 70, 75, 65),
("이철수", 60, 55, 50)]
for row in students:
ws.append(list(row))
for i in range(2, 5):
ws[f"E{i}"] = f"=SUM(B{i}:D{i})"
ws[f"F{i}"] = f'=IF(E{i}>=210, "합격", "불합격")'
for cell in ws["1:1"]:
cell.font = Font(bold=True)
wb.save("엑셀_함수자동화.xlsx")
자동으로 막대그래프(Bar), 선형(Line), 파이(Pie) 등 시각화 자료를 생성할 수 있습니다. 업무 보고서나 실적 분석에 활용 가능합니다.
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
wb = Workbook()
ws = wb.active
ws.append(["과목", "점수"])
ws.append(["국어", 85])
ws.append(["영어", 90])
ws.append(["수학", 95])
chart = BarChart()
data = Reference(ws, min_col=2, min_row=1, max_row=4)
categories = Reference(ws, min_col=1, min_row=2, max_row=4)
chart.add_data(data, titles_from_data=True)
chart.set_categories(categories)
chart.title = "과목별 점수"
ws.add_chart(chart, "D2")
wb.save("엑셀_차트자동화.xlsx")
70점 미만은 빨간색, 특정 값 이상은 녹색 등 조건부 서식도 자동화할 수 있습니다. 평가 기준을 시각적으로 강조할 때 매우 유용합니다.
from openpyxl import Workbook
from openpyxl.formatting.rule import CellIsRule
from openpyxl.styles import PatternFill
wb = Workbook()
ws = wb.active
ws.append(["이름", "점수"])
ws.append(["홍길동", 85])
ws.append(["김영희", 72])
ws.append(["이철수", 50])
red_fill = PatternFill(start_color='FFC7CE', end_color='FFC7CE', fill_type='solid')
ws.conditional_formatting.add("B2:B4", CellIsRule(operator='lessThan', formula=['70'], fill=red_fill))
wb.save("엑셀_조건부서식.xlsx")
월별 매출 보고서 등 다중 파일을 자동 병합하여 하나의 시트로 정리할 수 있습니다. 반복 작업 자동화에 적합합니다.
import pandas as pd
import glob
file_list = glob.glob("data/month_*.xlsx")
merged_df = pd.DataFrame()
for file in file_list:
df = pd.read_excel(file)
merged_df = pd.concat([merged_df, df], ignore_index=True)
merged_df.to_excel("전체_매출_합산.xlsx", index=False)
자동 생성된 엑셀 파일을 이메일로 전송할 수도 있습니다. 매일 정해진 시간에 보고서를 공유하는 자동화 워크플로우에 유용합니다.
import yagmail
yag = yagmail.SMTP(user='your_email@gmail.com', password='앱비밀번호')
yag.send(
to='받는사람@domain.com',
subject='자동 생성된 엑셀 파일입니다',
contents='첨부된 파일을 확인해주세요.',
attachments='엑셀_함수자동화.xlsx'
)
요약 : Python을 활용한 엑셀 자동화는 단순한 입력 자동화뿐 아니라, 수식 처리, 시각화, 병합, 이메일 전송까지 실무 전반을 커버합니다. openpyxl과 pandas의 조합은 반복적인 엑셀 작업의 효율을 극대화하는 최고의 방법이며, 누구나 쉽게 적용할 수 있습니다. 지금 바로 업무에 도입해보세요!