본문 바로가기
카테고리 없음

셀 색상, 폰트, 테두리까지! 파이썬으로 엑셀 서식 자동 지정하기

by jbparkbill 2025. 10. 30.
반응형

셀 색상, 폰트, 테두리까지! 파이썬으로 엑셀 서식 자동 지정하기
셀 색상, 폰트, 테두리까지! 파이썬으로 엑셀 서식 자동 지정하기

IT·디지털 자동화 블로그 · 파이썬 엑셀 서식 자동화

 

openpyxl을 활용하면 엑셀의 색상, 폰트, 테두리, 정렬 같은 시각 요소를 코드 한 줄로 제어할 수 있습니다. 이 글에서는 보고서 품질을 높이는 엑셀 서식 자동화의 모든 과정을 단계별로 보여드립니다.

환경 설정

openpyxl은 엑셀 파일 서식 제어에 최적화된 라이브러리입니다.

pip install openpyxl

샘플 엑셀 파일 만들기

from openpyxl import Workbook

wb = Workbook()
ws = wb.active
ws.title = "매출현황"

data = [
    ["월", "매출", "비용", "이익"],
    ["1월", 120, 80, 40],
    ["2월", 150, 90, 60],
    ["3월", 180, 110, 70],
]
for row in data:
    ws.append(row)

wb.save("excel_format_sample.xlsx")
print("기본 데이터 생성 완료")

폰트와 색상 지정

제목 행을 굵은 글씨로 표시하고 배경색을 추가합니다.

from openpyxl import load_workbook
from openpyxl.styles import Font, PatternFill

wb = load_workbook("excel_format_sample.xlsx")
ws = wb["매출현황"]

# 제목 행 스타일 지정
header_font = Font(bold=True, color="FFFFFF")
header_fill = PatternFill("solid", fgColor="4F81BD")

for cell in ws[1]:
    cell.font = header_font
    cell.fill = header_fill

wb.save("excel_format_sample.xlsx")
print("폰트 및 색상 적용 완료")

테두리와 정렬

테이블 형태를 완성하기 위해 모든 셀에 테두리와 가운데 정렬을 적용합니다.

from openpyxl.styles import Alignment, Border, Side

thin = Side(style="thin", color="9CA3AF")
border = Border(left=thin, right=thin, top=thin, bottom=thin)
align_center = Alignment(horizontal="center", vertical="center")

for row in ws.iter_rows(min_row=1, max_row=ws.max_row, max_col=4):
    for cell in row:
        cell.border = border
        cell.alignment = align_center

wb.save("excel_format_sample.xlsx")
print("테두리 및 정렬 적용 완료")

조건부 강조 서식

이익이 60 이상인 셀을 초록색으로 강조 표시합니다.

from openpyxl.formatting.rule import CellIsRule

ws.conditional_formatting.add("D2:D4",
    CellIsRule(operator="greaterThanOrEqual", formula=["60"],
               stopIfTrue=True,
               fill=PatternFill(start_color="C6EFCE", end_color="C6EFCE", fill_type="solid")))

wb.save("excel_format_sample.xlsx")
print("조건부 서식 적용 완료")

자동 저장

날짜를 포함한 버전 이름으로 자동 저장합니다.

from datetime import datetime

today = datetime.now().strftime("%Y%m%d")
wb.save(f"excel_format_report_{today}.xlsx")
print("서식 보고서 자동 저장 완료")

다음 글 예고: 엑셀 서식 + 차트 자동 보고서 완성

다음 편에서는 이번에 만든 서식에 자동 차트를 추가하고, 완전한 보고서 형태로 자동화하는 방법을 다룹니다.

다음 글 보러 가기

관련 읽을거리: 시트 자동 생성 · 셀 값 수정 자동화

참고: Python 공식 문서, openpyxl 스타일 가이드. 본 예제는 사내 보고서, 매출 시트, 관리 대장 자동화에 그대로 적용 가능합니다.

반응형