직장인들이 업무 중에 가장 오랜 시간 열어두는 프로그램을 하나 꼽으라면 단연 엑셀(Excel)일 것입니다. 매출 집계, 재고 관리, 회원 명단 정리, 일일 보고서 작성 등 거의 모든 데이터 관련 업무가 엑셀을 거쳐 이루어집니다.

하지만 매일 똑같은 포맷의 엑셀 파일 수십 개를 일일이 열어서 필요한 칸의 값을 복사하고, 새로운 파일에 붙여넣는 작업은 엄청난 시간과 집중력을 소모하게 만듭니다. 사람인 이상 피곤해지면 숫자를 잘못 옮겨 적는 오타 실수를 저지르기도 쉽습니다.

오늘은 파이썬을 활용해 엑셀 프로그램을 직접 켜지 않고도 파일 읽기, 데이터 수정, 새로운 시트 생성까지 손가락 하나 대지 않고 3초 만에 끝내는 openpyxl 라이브러리 기초 활용법을 정리해 드립니다.


1. 파이썬 엑셀 제어의 핵심: openpyxl 라이브러리 설치

파이썬 기본 문법만으로는 .xlsx 확장자를 가진 엑셀 파일의 구조를 직접 해석하기 어렵습니다. 그래서 엑셀 파일 조작에 특화된 외부 라이브러리인 openpyxl을 사용합니다.

설치는 매우 간단합니다. 사용 중인 명령 프롬프트(cmd)나 터미널 창을 열고 아래 명령어를 입력하기만 하면 됩니다.

pip install openpyxl

설치가 완료되었다면 내 파이썬 코드 상단에 import openpyxl을 선언하여 엑셀을 자유자재로 다룰 모든 준비를 마치게 됩니다.


2. 엑셀의 3단계 구조 이해하기 (Workbook, Sheet, Cell)

파이썬 코드로 엑셀을 다룰 때는 실제 엑셀 프로그램의 구성 요소를 그대로 본뜬 3가지 개념만 기억하면 됩니다.

  1. Workbook (워크북): 엑셀 파일 전체를 의미하는 가장 큰 개념입니다.

  2. Worksheet (워크시트): 엑셀 파일 내부에 있는 각각의 '시트(탭)'입니다.

  3. Cell (셀): 행(Row)과 열(Column)이 만나 데이터를 담고 있는 '각 각각의 칸(예: A1, B3)'입니다.

이 3단계 순서대로 접근해야만 파이썬이 "어떤 파일의, 어떤 시트에 있는, 어느 칸의 값"을 수정해야 하는지 정확히 인지할 수 있습니다.


3. 실전 예제: 엑셀 파일 생성하고 데이터 입력하기

실제 코드를 작성해서 새로운 엑셀 파일을 만들고 데이터를 적어보겠습니다.

Python
import openpyxl

# 1. 새로운 엑셀 워크북 생성
wb = openpyxl.Workbook()

# 2. 현재 활성화된 시트 선택
ws = wb.active
ws.title = "매출집계"  # 시트 이름 변경

# 3. 셀에 데이터 입력하기 (두 가지 방법)
ws['A1'] = "상품명"
ws['B1'] = "판매량"

ws.cell(row=2, column=1, value="파이썬 책")  # A2 셀과 동일
ws.cell(row=2, column=2, value=15)           # B2 셀과 동일

# 4. 파일 저장하기
wb.save("2026_매출보고서.xlsx")
  • ws['A1'] 방식: 우리가 익히 아는 엑셀 좌표(A1, B2)를 그대로 쓰는 직관적인 방식입니다.

  • ws.cell(row=2, column=1) 방식: 행과 열을 숫자로 지정하는 방식입니다. 차후 반복문(for문)을 돌려 수백 개의 데이터를 자동으로 채워 넣을 때 필수적으로 사용됩니다.


4. 기존 엑셀 파일 불러와서 데이터 읽기

이미 만들어져 있는 엑셀 파일을 불러와 데이터를 읽어오는 방법도 매우 간단합니다.

Python
import openpyxl

# 기존 엑셀 파일 불러오기
wb = openpyxl.load_workbook("2026_매출보고서.xlsx")
ws = wb["매출집계"]

# 특정 셀의 값 출력하기
print(ws['A2'].value)  # 출력 결과: 파이썬 책
print(ws['B2'].value)  # 출력 결과: 15

여기서 초보자가 가장 많이 하는 실수가 바로 .value 속성을 빠뜨리는 것입니다.

print(ws['A2'])라고만 작성하면 데이터 내용물인 "파이썬 책"이 나오는 것이 아니라, <Cell '매출집계'.A2>라는 셀 객체의 좌표 정보가 출력됩니다. 반드시 뒤에 .value를 붙여야 칸 안에 들어있는 진짜 알맹이 데이터를 가져올 수 있습니다.


5. 초보자가 자주 겪는 PermissionError 에러 대처법

openpyxl로 코드를 작성하고 실행할 때 가장 자주 터지는 대표적인 에러가 있습니다.

PermissionError: [Errno 13] Permission denied: '2026_매출보고서.xlsx'

이 에러는 파이썬이 수정하려고 하는 엑셀 파일이 컴퓨터(사용자) 화면에 이미 열려있을 때 발생합니다.

엑셀 프로그램이 해당 파일을 잠금(Lock) 처리해 두고 있기 때문에 파이썬이 접근하지 못하는 것입니다. 코드를 실행하기 전에는 반드시 작업 대상이 되는 엑셀 파일 창을 닫아주는 습관이 필요합니다.


핵심요약

  • 파이썬으로 엑셀을 다루려면 pip install openpyxl 라이브러리 설치가 필요합니다.

  • 엑셀 제어는 Workbook(파일) -> Sheet(시트) -> Cell(칸)의 3단계 구조로 접근합니다.

  • 셀의 실제 데이터를 가져올 때는 .value 속성을 사용해야 하며, 파일 오픈 중 발생하는 PermissionError 방지를 위해 실행 전 엑셀 창을 닫아야 합니다.