[Python] openpyxl로 엑셀 자동화하기 – 파일 생성부터 스타일, 조건부 서식까지 완전 정복
엑셀은 데이터 관리, 보고서, 자동화 업무에서 빠질 수 없는 도구입니다.
파이썬의 openpyxl 라이브러리를 활용하면 반복적인 엑셀 작업을 자동화할 수 있습니다.
이번 글에서는 엑셀 파일 생성, 수정, 셀 서식 적용, 조건부 서식까지 단계별 실전 예제를 소개합니다.
✅ 1. openpyxl 설치하기
pip install openpyxl
✅ 2. 엑셀 파일 생성 및 데이터 입력
from openpyxl import Workbook
# 워크북 생성 및 시트 선택
wb = Workbook()
ws = wb.active
# 헤더 및 데이터 작성
ws['A1'] = '이름'
ws['B1'] = '점수'
ws.append(['홍길동', 90])
ws.append(['김철수', 85])
# 파일 저장
wb.save("sample.xlsx")
✅ 3. 기존 엑셀 파일 열고 값 수정하기
from openpyxl import load_workbook
# 파일 열기
wb = load_workbook("sample.xlsx")
ws = wb.active
# 데이터 수정
ws['B2'] = 95 # 홍길동 점수 수정
# 다시 저장
wb.save("sample_modified.xlsx")
✅ 4. 셀 서식 지정 (폰트, 정렬, 배경색)
from openpyxl.styles import Font, Alignment, PatternFill
# 워크북 로드
wb = load_workbook("sample.xlsx")
ws = wb.active
# 스타일 정의
font = Font(bold=True, color="FFFFFF")
align = Alignment(horizontal="center")
fill = PatternFill(start_color="4F81BD", end_color="4F81BD", fill_type="solid")
# 헤더 셀에 스타일 적용
for cell in ws[1]:
cell.font = font
cell.alignment = align
cell.fill = fill
wb.save("sample_styled.xlsx")
✅ 5. 조건부 서식 (90점 이상이면 녹색 배경)
from openpyxl.formatting.rule import CellIsRule
from openpyxl.styles import PatternFill
# 워크북 로드
wb = load_workbook("sample.xlsx")
ws = wb.active
# 조건부 서식 정의
green_fill = PatternFill(start_color="C6EFCE", end_color="C6EFCE", fill_type="solid")
rule = CellIsRule(operator="greaterThanOrEqual", formula=["90"], fill=green_fill)
# 범위에 적용
ws.conditional_formatting.add("B2:B10", rule)
wb.save("sample_conditional.xlsx")
✅ 6. 자주 발생하는 오류 및 해결 팁
PermissionError
→ 엑셀 파일이 열려 있는지 확인 후 닫고 실행- 한글 깨짐 방지 →
Font(name="맑은 고딕")
등 한글 폰트 설정 ModuleNotFoundError
→pip install openpyxl
설치 필요
📌 마무리
openpyxl은 엑셀 자동화를 위한 강력한 도구입니다.
이번 글에서 다룬 기능만으로도 반복 업무를 줄이고 생산성을 높일 수 있습니다.
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[Python] 파일 자동 정리 프로그램 만들기 – 확장자별 분류부터 이동, 삭제까지 (4) | 2025.07.09 |
---|---|
[Python] openpyxl로 엑셀 차트 자동화하기 – 라인 차트, 바 차트, 저장까지 실습 예제 (0) | 2025.07.09 |
[Python] pandas로 CSV, JSON, Excel 완전 정복 파일 불러오기부터 저장까지 실전 예제 (2) | 2025.05.21 |
[Python] 내 컴퓨터 중복 파일 찾기 – 해시값 비교로 이미지/문서 정리하기 (2) | 2025.03.28 |
[Python] 나만의 명언 봇 만들기 – JSON으로 랜덤 출력하기 (2) | 2025.03.28 |