엑셀 파일은 데이터 관리와 분석에서 널리 사용됩니다.
파이썬의 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은 데이터 관리와 분석에 큰 도움을 줍니다.
실습을 통해 다양한 엑셀 자동화 시나리오를 구현해보세요!