본문 바로가기
Python

[Python] openpyxl 라이브러리로 xlsx 파일 쓰거나 읽기

by teamnova 2023. 6. 30.
728x90

안녕하세요.

이번에는 Python 으로 openpyxl 라이브러리를 써서 xlsx 파일을 쓰거나 읽는 예제를 진행하겠습니다.

 

먼저 openpyxl 을 설치해줍니다. 명령어는 다음과 같습니다.

pip install openpyxl

 

1. xlsx 파일 쓰기.

xlsx 파일을 쓰는 예제 코드입니다.

from openpyxl import Workbook

# 엑셀파일 쓰기
write_wb = Workbook()

# '생성시트' 이름을 가진 시트를 생성
write_ws = write_wb.create_sheet('생성시트')

# '생성시트'에다 입력
write_ws = write_wb['생성시트']
write_ws['A1'] = '숫자'

# 행 단위로 추가
write_ws.append([1,2,3])

# 셀 단위로 추가
write_ws.cell(5, 5, '5행5열')

# xlsx 파일 저장. './'는 현 디렉토리를 의미하며, 여기서는 현 디렉토리에 저장한다.
write_wb.save("./숫자.xlsx")

 

결과는 다음과 같습니다.

 

 

2. xlsx 파일 읽기.

xlsx 파일 내의 데이터를 읽어오는 예제입니다.

 

위에서 생성한 '숫자.xlsx' 파일을 읽어오겠습니다.

from openpyxl import load_workbook


# data_only=True로 해줘야 수식이 아닌 값으로 받아온다. 
load_wb = load_workbook("./숫자.xlsx", data_only=True)

# 시트 불러오기 
load_ws = load_wb['생성시트']


# 셀 주소로 값 출력
print("==== 셀 주소로 값 출력 ====")

print(load_ws['B2'].value)

print("===========================\n\n")


# 셀 좌표로 값 출력. (행, 열). 각각 1부터 시작한다.
print("==== 셀 좌표로 값 출력 ====")

print(load_ws.cell(2, 1).value)

print("===========================\n\n")

# 두 셀을 지정하여 해당 셀 범위 내의 값 출력
print("==== 두 셀을 지정하여 해당 셀 범위 내의 값 출력 ====")

get_cells = load_ws['A1' : 'B3']
for row in get_cells:
    for cell in row:
        print(cell.value)
    print('\n')
    
print("====================================================\n\n")

# 모든 행과 열 출력
print("==== 데이터가 적힌 범위 내의 모든 행과 열의 값 출력 ====")

all_values = []
for row in load_ws.rows:
    row_value = []
    for cell in row:
        row_value.append(cell.value)
    all_values.append(row_value)
print(all_values)

print("========================================================")

 

결과는 다음과 같습니다.