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

파이썬으로 엑셀 자동화하기 - openpyxl을 활용한 데이터 처리

by 혜택보관소 2024. 11. 19.

엑셀 파일은 데이터 관리와 분석에서 널리 사용됩니다.

파이썬의 openpyxl 라이브러리를 사용하면 엑셀 파일을 생성, 수정, 읽기, 저장할 수 있으며, 반복 작업을 자동화할 수 있습니다.

이번 글에서는 openpyxl을 사용한 엑셀 자동화의 기초와 실습 예제를 소개합니다.

openpyxl 설치 및 기본 사용법

openpyxl은 파이썬으로 엑셀 파일을 다루는 데 사용되는 강력한 라이브러리입니다.

설치는 다음 명령어를 사용합니다:

pip install openpyxl

설치 후, 엑셀 파일을 생성하고 데이터를 추가하는 간단한 작업부터 시작해보겠습니다.

엑셀 파일 생성 및 데이터 추가

openpyxl을 사용하면 새로운 엑셀 파일을 쉽게 생성할 수 있습니다.

기본적으로 워크북(Workbook)을 생성한 후 워크시트(Worksheet)에 데이터를 추가합니다.

예제: 엑셀 파일 생성 및 데이터 추가

from openpyxl import Workbook

# 워크북 생성
wb = Workbook()

# 기본 워크시트 선택
ws = wb.active
ws.title = "샘플 데이터"  # 워크시트 이름 변경

# 데이터 추가
ws.append(["이름", "나이", "성적"])  # 헤더
ws.append(["철수", 15, 88])
ws.append(["영희", 17, 92])
ws.append(["민수", 16, 79])

# 파일 저장
wb.save("sample_data.xlsx")
print("엑셀 파일이 생성되었습니다.")

위 코드에서는 append() 메서드를 사용하여 데이터를 한 행씩 추가하고, save() 메서드로 파일을 저장합니다.

엑셀 파일 읽기

이미 존재하는 엑셀 파일의 데이터를 읽는 방법은 load_workbook() 함수를 사용하여 워크북을 불러온 후,

원하는 워크시트를 선택하는 방식입니다.

예제: 엑셀 파일 읽기

from openpyxl import load_workbook

# 파일 불러오기
wb = load_workbook("sample_data.xlsx")
ws = wb.active

# 데이터 읽기
for row in ws.iter_rows(values_only=True):
    print(row)

위 코드에서 iter_rows() 메서드는 엑셀의 모든 행을 순회하며 데이터를 읽습니다.

values_only=True를 사용하면 값만 반환합니다.

데이터 수정 및 추가

openpyxl을 사용하면 기존 데이터 수정이나 새로운 데이터를 추가할 수 있습니다.

예제: 데이터 수정 및 새로운 열 추가

# 기존 데이터 수정
ws["C2"] = 90  # 철수의 성적 수정

# 새로운 열 추가
ws["D1"] = "합격 여부"  # 새로운 헤더 추가
for row in range(2, ws.max_row + 1):
    score = ws[f"C{row}"].value
    ws[f"D{row}"] = "합격" if score >= 80 else "불합격"

# 파일 저장
wb.save("sample_data_updated.xlsx")
print("엑셀 파일이 수정되었습니다.")

위 코드에서는 셀 주소("C2", "D1")를 사용해 특정 데이터를 수정하거나, 새로운 데이터를 계산하여 추가합니다.

스타일 및 서식 적용

openpyxl을 사용해 셀의 스타일과 서식을 설정할 수 있습니다.

글꼴, 색상, 테두리 등을 설정하여 엑셀 파일의 가독성을 높일 수 있습니다.

예제: 스타일 적용

from openpyxl.styles import Font, Alignment, PatternFill

# 헤더 스타일 설정
header_font = Font(bold=True, color="FFFFFF")
header_fill = PatternFill(start_color="4CAF50", end_color="4CAF50", fill_type="solid")
alignment = Alignment(horizontal="center", vertical="center")

for cell in ws[1]:  # 첫 번째 행(헤더)에 스타일 적용
    cell.font = header_font
    cell.fill = header_fill
    cell.alignment = alignment

# 파일 저장
wb.save("styled_data.xlsx")
print("엑셀 파일에 스타일이 적용되었습니다.")

위 코드에서는 Font, PatternFill, Alignment 등을 사용해 헤더에 굵은 글꼴, 배경색, 정렬 스타일을 적용합니다.

엑셀 자동화 활용 사례

openpyxl을 사용한 엑셀 자동화는 다양한 실무 작업에 적용될 수 있습니다.

  • 매월 보고서 자동 생성 및 저장
  • 대량 데이터 처리 및 계산 자동화
  • 외부 데이터 수집 후 엑셀로 정리
  • 정기적인 데이터 업데이트 및 수정

전체 예제: 월별 보고서 생성

다음은 특정 데이터를 기반으로 월별 보고서를 자동으로 생성하는 전체 예제입니다.

# 데이터
monthly_data = {
    "1월": [100, 200, 150],
    "2월": [120, 220, 180],
    "3월": [130, 250, 170],
}

# 워크북 생성
wb = Workbook()
ws = wb.active
ws.title = "월별 보고서"

# 헤더 추가
ws.append(["월", "판매량 A", "판매량 B", "판매량 C"])

# 데이터 추가
for month, sales in monthly_data.items():
    ws.append([month] + sales)

# 파일 저장
wb.save("monthly_report.xlsx")
print("월별 보고서가 생성되었습니다.")

마무리

이번 글에서는 파이썬 openpyxl 라이브러리를 사용해 엑셀 파일을 생성, 읽기, 수정, 스타일 적용하는 방법을 살펴보았습니다.

반복 작업을 자동화하고 효율적으로 처리할 수 있는 openpyxl은 데이터 관리와 분석에 큰 도움을 줍니다.

실습을 통해 다양한 엑셀 자동화 시나리오를 구현해보세요!