Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python openpyxl 모듈로 엑셀 파일 읽기·쓰기 완벽 가이드

Python에서는 openpyxl 모듈을 사용해 엑셀(Excel) 파일을 손쉽게 다룰 수 있습니다. 이 모듈 하나만 있으면 엑셀 파일 생성, 데이터 쓰기, 읽기 등 대부분의 작업을 코드로 처리할 수 있습니다.

openpyxl은 외부 라이브러리이므로 먼저 설치가 필요합니다. 명령 프롬프트(cmd)에 아래 명령어를 입력하세요.

pip install openpyxl

설치가 완료되면 바로 실습을 시작할 수 있습니다. 아래에서 자주 사용되는 핵심 기능들을 예제와 함께 살펴보겠습니다.


1. 시트 제목 확인하기

새 워크북을 만들면 기본적으로 'Sheet'라는 이름의 시트가 생성됩니다. 현재 활성화된 시트의 제목을 출력해 보겠습니다.

import openpyxl

my_wb = openpyxl.Workbook()
my_sheet = my_wb.active
my_sheet_title = my_sheet.title
print("내 시트 제목: " + my_sheet_title)

실행 결과

내 시트 제목: Sheet

2. 시트 제목 변경하기

시트의 title 속성에 새 문자열을 할당하면 제목이 변경됩니다.

import openpyxl

my_wb = openpyxl.Workbook()
my_sheet = my_wb.active
my_sheet.title = "My New Sheet"
print("시트 이름: " + my_sheet.title)

실행 결과

시트 이름: My New Sheet

3. 셀에 데이터 쓰기

데이터를 입력하는 방법은 두 가지입니다. cell(row, column) 메서드를 사용하거나, 'A2'처럼 셀 주소를 직접 지정하는 방식입니다.

import openpyxl

my_wb = openpyxl.Workbook()
my_sheet = my_wb.active

c1 = my_sheet.cell(row=1, column=1)
c1.value = "Aadrika"
c2 = my_sheet.cell(row=1, column=2)
c2.value = "Adwaita"
c3 = my_sheet['A2']
c3.value = "Satyajit"
# B2 = 2행 2열
c4 = my_sheet['B2']
c4.value = "Bivas"

my_wb.save(r"C:\Users\TP\Desktop\Book1.xlsx")

작업이 끝나면 반드시 save() 메서드로 파일을 저장해야 변경 사항이 디스크에 반영됩니다. 참고로 Windows 경로 앞에 r을 붙여 원시 문자열(raw string)로 작성하면 역슬래시 오류를 방지할 수 있습니다.

실행 결과

Python openpyxl 모듈로 엑셀 파일 읽기·쓰기 완벽 가이드

4. 워크북에 새 시트 추가하기

create_sheet() 메서드를 사용하면 원하는 위치(index)에 새 시트를 삽입할 수 있습니다.

import openpyxl

my_wb = openpyxl.Workbook()
my_sheet = my_wb.active
my_wb.create_sheet(index=1, title="new sheet")
my_wb.save(r"C:\Users\TP\Desktop\Book1.xlsx")

실행 결과

Python openpyxl 모듈로 엑셀 파일 읽기·쓰기 완벽 가이드

5. 전체 행 개수 구하기

기존 파일을 불러올 때는 load_workbook() 함수를 사용합니다. 시트 객체의 max_row 속성으로 마지막 데이터가 있는 행 번호를 알 수 있습니다.

import openpyxl

my_path = r"C:\Users\TP\Desktop\Book1.xlsx"
my_wb_obj = openpyxl.load_workbook(my_path)
my_sheet_obj = my_wb_obj.active
print(my_sheet_obj.max_row)

실행 결과

2

6. 특정 셀 값 읽기

행과 열 번호를 지정하면 해당 위치의 셀 값을 가져올 수 있습니다.

import openpyxl

# 파일 경로 지정
my_path = r"C:\Users\TP\Desktop\Book1.xlsx"
my_wb_obj = openpyxl.load_workbook(my_path)
my_sheet_obj = my_wb_obj.active
my_cell_obj = my_sheet_obj.cell(row=1, column=1)
print(my_cell_obj.value)

실행 결과

Aadrika

7. 전체 열 개수 구하기

max_column 속성으로 마지막 데이터가 있는 열 번호를 확인할 수 있습니다.

import openpyxl

# 파일 경로 지정
my_path = r"C:\Users\TP\Desktop\Book1.xlsx"
my_wb_obj = openpyxl.load_workbook(my_path)
my_sheet_obj = my_wb_obj.active
print(my_sheet_obj.max_column)

실행 결과

2

8. 첫 번째 행의 모든 값 출력하기

반복문과 cell() 메서드를 조합하면 특정 행의 값을 순서대로 읽어올 수 있습니다.

import openpyxl

# 파일 경로 지정
my_path = r"C:\Users\TP\Desktop\Book1.xlsx"
# 워크북 객체 생성
my_wb_obj = openpyxl.load_workbook(my_path)
my_sheet_obj = my_wb_obj.active
my_max_col = my_sheet_obj.max_column

for i in range(1, my_max_col + 1):
    my_cell_obj = my_sheet_obj.cell(row=1, column=i)
    print(my_cell_obj.value)

실행 결과

Aadrika Adwaita

9. 첫 번째 열의 모든 값 출력하기

같은 방식으로 행 방향으로 반복하면 한 열의 전체 데이터를 얻을 수 있습니다.

import openpyxl

# 파일 경로 지정
my_path = r"C:\Users\TP\Desktop\Book1.xlsx"
my_wb_obj = openpyxl.load_workbook(my_path)
my_sheet_obj = my_wb_obj.active
my_row = my_sheet_obj.max_row

for i in range(1, my_row + 1):
    cell_obj = my_sheet_obj.cell(row=i, column=1)
    print(cell_obj.value)

실행 결과

Aadrika Satyajit

10. 특정 행의 전체 값 출력하기

end=" " 옵션을 사용하면 줄바꿈 없이 한 줄로 출력할 수 있습니다.

import openpyxl

# 파일 경로 지정
my_path = r"C:\Users\TP\Desktop\Book1.xlsx"
my_wb_obj = openpyxl.load_workbook(my_path)
my_sheet_obj = my_wb_obj.active
my_max_col = my_sheet_obj.max_column

for i in range(1, my_max_col + 1):
    cell_obj = my_sheet_obj.cell(row=2, column=i)
    print(cell_obj.value, end=" ")

실행 결과

Satyajit Bivas

마무리

지금까지 openpyxl 모듈을 활용한 엑셀 파일의 생성, 시트 관리, 데이터 읽기·쓰기 방법을 알아보았습니다. 이 기능들은 단순한 데이터 입력을 넘어 대량의 엑셀 데이터 자동 처리, 보고서 자동 생성 등 업무 자동화의 기반이 됩니다. 실제 프로젝트에서는 pandas 라이브러리와 함께 사용하면 더욱 강력한 데이터 분석 환경을 구축할 수 있습니다.