지금까지 우리는 파이썬의 핵심 문법인 변수, 리스트, 조건문, 반복문, 함수를 차근차근 익혔습니다.
하지만 여전히 화면 터미널 창에서만 결과를 확인하다 보니, “이걸로 진짜 내 바탕화면에 있는 엑셀 파일을 건드릴 수 있는 건가?” 하는 의문이 드셨을 겁니다.
이제 준비 운동은 끝났습니다. 이번 글부터는 파이썬 전용 엑셀 제어 도구인 openpyxl 라이브러리를 활용해, 내 컴퓨터 속 실제 엑셀(.xlsx) 파일을 열고, 데이터를 가공한 뒤, 새로운 엑셀 보고서로 저장하는 진짜 업무 자동화를 실습해 봅니다.
1. 외부 라이브러리 설치: pip install openpyxl
파이썬 기본 엔진에는 엑셀 파일을 직접 열고 닫는 기능이 포함되어 있지 않습니다. 전 세계 개발자들이 만들어 둔 무료 확장 부품(라이브러리)을 설치해야 합니다.
VS Code를 열고 상단 메뉴의 터미널 → 새 터미널 (Ctrl + `)을 엽니다.
하단 터미널 창에 아래 명령어를 입력하고 Enter를 누릅니다.
Bash
pip install openpyxl
Successfully installed openpyxl-... 문구가 뜨면 엑셀 조작 준비가 끝난 것입니다.
VS Code 터미널에서 openpyxl 라이브러리 설치 완료 화면
pip 명령어를 사용하면 엑셀 자동화에 필요한 외부 라이브러리를 한 줄로 손쉽게 설치할 수 있습니다.
2. 파이썬으로 새 엑셀 파일 만들고 데이터 쓰기
새로운 엑셀 워크북(통합 문서)을 생성하고, 특정 셀에 데이터를 입력한 뒤 파일로 저장해 보겠습니다.
Python
from openpyxl import Workbook
# 1. 새 엑셀 통합 문서(Workbook) 생성
wb = Workbook()
# 2. 현재 활성화된 시트(Sheet) 선택
ws = wb.active
ws.title = "매출현황" # 시트 이름 변경
# 3. 셀 좌표에 데이터 직접 입력
ws["A1"] = "품목명"
ws["B1"] = "단가"
ws["C1"] = "수량"
ws["A2"] = "무선 키보드"
ws["B2"] = 45000
ws["C2"] = 10
# 4. 파일 저장하기
wb.save("2026_상반기_매출현황.xlsx")
print("엑셀 파일이 성공적으로 생성되었습니다!")
코드를 실행하면 파이썬 파일이 저장된 폴더에 2026_상반기_매출현황.xlsx 파일이 실제로 생성되며, 더블클릭해 열어보면 우리가 지정한 A1, B2 셀에 값이 정확히 들어가 있는 것을 확인할 수 있습니다.
파이썬 코드로 자동 생성된 엑셀 파일 열기 화면
파이썬 코드를 실행하는 순간 백그라운드에서 실제 엑셀 파일이 만들어지고 서식이 적용됩니다.
3. 기존 엑셀 파일 불러와서 데이터 읽기
이번에는 기존에 보관 중이던 엑셀 파일을 파이썬으로 불러와 데이터를 한 줄씩 읽는 방법입니다.
Python
from openpyxl import load_workbook
# 1. 기존 엑셀 파일 불러오기
wb = load_workbook("2026_상반기_매출현황.xlsx")
ws = wb["매출현황"]
# 2. 특정 셀 값 읽기
item_name = ws["A2"].value
item_price = ws["B2"].value
print(f"2행 품목: {item_name}, 가격: {item_price:,}원")
# 3. for 반복문으로 1행부터 끝까지 전체 행 순회하기
print("\n--- 전체 시트 데이터 출력 ---")
for row in ws.iter_rows(values_only=True):
print(row)
load_workbook("파일명.xlsx"): 기존 엑셀 문서를 메모리로 로드합니다.
.value: 셀 좌표 뒤에 .value를 붙여야 셀 안의 실제 텍스트나 숫자 데이터를 가져옵니다.
iter_rows(values_only=True): 시트의 모든 데이터를 행(Row) 단위 튜플로 한 번에 꺼내옵니다.
4. 실전 자동화: 수백 줄 엑셀 견적서 일괄 계산 및 새 파일 저장
이제 실무에서 가장 유용한 예제를 실습합니다.
기존 엑셀 원장에서 ‘단가’와 ‘수량’을 읽어와 ‘합계 금액’과 ‘부가세(10%)’를 자동으로 계산해 D열과 E열에 채워 넣는 작업입니다.
Python
from openpyxl import load_workbook
# 1. 원본 엑셀 파일 로드
wb = load_workbook("2026_상반기_매출현황.xlsx")
ws = wb.active
# 2. 새로운 열 머리글(Header) 추가
ws["D1"] = "공급가액"
ws["E1"] = "부가세(10%)"
# 3. 2행부터 마지막 행까지 돌며 자동 계산 (1행은 머리글이므로 제외)
for row_idx in range(2, ws.max_row + 1):
price = ws.cell(row=row_idx, column=2).value # B열 (단가)
quantity = ws.cell(row=row_idx, column=3).value # C열 (수량)
if price and quantity:
total_price = price * quantity
vat = total_price * 0.1
# D열(4번째 열), E열(5번째 열)에 계산 결과 입력
ws.cell(row=row_idx, column=4, value=total_price)
ws.cell(row=row_idx, column=5, value=vat)
# 4. 가공된 내용을 '정산완료' 새 파일로 저장
wb.save("2026_상반기_매출현황_정산완료.xlsx")
print("데이터 일괄 정산 및 저장이 완료되었습니다!")
ws.max_row: 엑셀 시트에서 데이터가 적혀 있는 맨 마지막 행 번호를 자동으로 감지합니다.
ws.cell(row=행, column=열): 영문 알파벳 좌표 대신 숫자 번호(row=2, column=4)로 셀을 지정할 수 있어 반복문 돌리기에 최적입니다.
Alt 텍스트: openpyxl로 엑셀 데이터 일괄 연산 후 저장된 결과 비교
이미지 캡션: 수천 줄의 데이터도 반복문을 통해 1초 만에 새로운 열을 계산하여 채워 넣을 수 있습니다.
40대 직장인을 위한 실무 요약
pip install openpyxl: 파이썬 엑셀 조작용 공식 필수 라이브러리 설치
Workbook() / load_workbook(): 새 엑셀 만들기 / 기존 엑셀 불러오기
ws["A1"].value: 특정 셀의 데이터 읽기 및 대입
ws.cell(row=r, column=c, value=v): 행/열 번호 기반으로 반복문 자동화 수행