Openpyxl_기초적인 사용법

25232 단어 openpyxlpythonopenpyxl

파이썬에서 엑셀을 다루기 위한 패키지들이 다양한데 그 중에서 우리 회사는 openpyxl을 사용한다.
참조

workbook 생성

  • 워크북 = 하나의 엑셀 파일(.xlsx) 전체
  • 워크북 안에 워크시트(Sheet1, Sheet2 ,,)들이 존재

새 워크북 생성

사용하기 위해서는 import openpyxl 해주어야한다.

import openpyxl

wb = openpyxl.Workbook()	# 워크북 생성시 자동으로 워크시트 1개 생성
ws = wb.active 			# 워크시트 활성화

# 우리회사에서는 openpyxl 생략하고 아래와 같이 작성후 사용
ws = Workbook().active
# or
wb = Workbook()
ws = wb.active

기존 워크북 불러오기

active

# 기존 엑셀 파일 load_workbook()으로 불러옴(openpyxl 생략)
wb = load_workbook(filename='filename.xlsx')
# 활성화 된 워크 시트
ws = wb.active		# <Worksheet "Sheet1">
# 필요한 시트
ws = wb['시트명']		

sheet_name

파일의 모든 시트명이 담긴 리스트는 get_sheet_names()를 이용해 얻을 수 있다.

wb = load_workbook(filename='filename.xlsx')
sheet = wb.get_sheet_names('Sheet4') 	# # <Worksheet "Sheet4">

워크시트 생성

wb.create_sheet('새 시트명', 0) # 0 ->0번째(맨 왼쪽)에 시트 위치

엑셀 데이터 사용법

셀 자체를 가르키는 것과 해당 셀의 값을 읽어 오는것을 구분지어 알고 확인해야한다.

셀 접근법

접근 방법에는 두가지가 있다

ws[coordinate('B5')]

print(f'ws["B5"] : {ws["B5"]}') # B5 셀
print(f'ws["B5"].value : {ws["B5"].value}') # B5 셀의 값
-------------------------------------------------------
# ws["B5"] : <Cell Sheet1.B5>
# ws["B5"].value : 202009

ws.cell(row=@ , column=@ )

print(f'ws.cell(row=5, column=2) : {ws.cell(row=5, column=2)}')  # 세로로 5번째, 가로로 2번째 셀
----------------------------------------------------------------
# ws.cell(row=5, column=2) :<Cell Sheet1.B5>
# ws.cell(row=5, column=2).value : 202009

❗️ 첫번째 열은 정수 1이 아닌 0이다

여러개의 셀 접근

print(f'ws["B"] : {ws["B"]}') 
------------------------------------------------------
ws["B"] : (<Cell Sheet1.B1>, <Cell Sheet1.B2>, <Cell Sheet1.B3>,
......<Cell Sheet1.B29>, <Cell Sheet1.B30>)

여러개의 cell을 튜플 형태로 묶어 반환한다.

print(ws['B5':'C7'])
------------------------------------------------------
((<Cell Sheet1.B5>, <Cell Sheet1.C5>), (<Cell Sheet1.B6>, <Cell Sheet1.C6>), (<Cell Sheet1.B7>, <Cell Sheet1.C7>))

#-----------------------------------------------------

for row in ws['B5':'C7']:
	print(row)
------------------------------------------------------
(<Cell Sheet1.B5>, <Cell Sheet1.C5>)
(<Cell Sheet1.B6>, <Cell Sheet1.C6>)
(<Cell Sheet1.B7>, <Cell Sheet1.C7>)

#------------------------------------------------------

for row in ws['B5':'C7']:
    for cell in row:
    	print(cell)  	# 여기서 cell.value 찍으면 값 출력
------------------------------------------------------
<Cell Sheet1.B5>
<Cell Sheet1.C5>
<Cell Sheet1.B6>
<Cell Sheet1.C6>
<Cell Sheet1.B7>
<Cell Sheet1.C7>

ws['B5':'C7'] 는 B5부터 C7까지의 cell을 모두 포함하고 있다. ws['B5':'C7'] 로 여러개의 cell을 tuple 형태로 묶어 반환하고, for문을 이용해 각 cell의 접근할 수 있다.

❗️ 순서는 행 -> 열 순서로 tuple이 반환

좋은 웹페이지 즐겨찾기