OpenPyXL을 이용해 엑셀 다루기

O

Python으로 OpenPyXL 모듈을 사용해 엑셀 파일을 다루는 방법을 알아보도록 하겠습니다.

OpenPyXL 모듈 설치하기

$ pip3 install openpyxl

엑셀 파일 쓰기

모듈 설치가 완료되었으면 OpenPyXL 홈페이지에 있는 샘플 코드를 작성하여 엑셀 파일을 생성해 보도록 하겠습니다.

from openpyxl import Workbook
wb = Workbook()

# grab the active worksheet
ws = wb.active

# Data can be assigned directly to cells
ws['A1'] = 42

# Rows can also be appended
ws.append([1, 2, 3])

# Python types will automatically be converted
import datetime
ws['A2'] = datetime.datetime.now()

# Save the file
wb.save("sample.xlsx")

샘플 코드를 작성하고 파일을 실행하면 해당 파일이 존재하는 위치에 sample.xlsx 파일이 생성되는 것을 확인하실 수 있습니다.

엑셀 파일 읽기

파일 읽기를 테스트하기 위해서 2개의 시트가 포함된 엑셀 파일을 생성하였습니다.

ASheet

이름나이
길동30
철수20
영희10

BSheet

A65
B66
C67
D68
import openpyxl

wb = openpyxl.load_workbook("./Test.xlsx")
for sheetName in wb.sheetnames:
	sheet = wb[sheetName]
	print(sheetName)

	for row in range(1, sheet.max_row + 1):
		result = []
		for col in range(1, sheet.max_column + 1):
			result.append(sheet.cell(row, col).value)

		print(result)

Test.xlsx 파일을 읽고 해당 파일에 존재하는 시트를 순차적으로 확인하는 코드입니다.

$ python excel.py 
ASheet
['이름', '나이']
['길동', 30.0]
['철수', 20.0]
['영희', 10.0]
BSheet
['A', 65.0]
['B', 66.0]
['C', 67.0]
['D', 68.0]

값이 아닌 수식이 읽히는 경우

위에서 사용한 코드는 각 셀에 수식이 있을 경우 값이 아닌 수식을 읽어오게 되어있습니다.
만약 수식이 아닌 값을 읽어오기를 바라는 경우에는 엑셀 파일을 읽을 때 data_only 값을 지정해 주어야 합니다.

# 셀(cell)에 수식이 있을 경우 수식을 가져옵니다.
wb = openpyxl.load_workbook("./Test.xlsx")

# 셀(cell)에 표시되는 값을 가져옵니다.
wb = openpyxl.load_workbook("./Test.xlsx", data_only=True)

Add comment

By berabue

최근 글

글 목록

최근 댓글

그 밖의 기능