Python openpyxl 사용법 정리

koeyhoyh·2021년 6월 29일
1

Python

목록 보기
1/2

최신화 : 2021.06.30

파이썬을 이용해 엑셀로 로그를 만들어야 하는 일이 생겼다.

pandas를 이용해 데이터를 전부 저장한 후 엑셀에 써 줄지, 아니면 나타나는 로그들을 바로바로 엑셀에 한 줄씩 넣어줄지 생각하다가 데이터 양이 너무 많아질 수 있어서 데이터를 저장하지 않고 바로 엑셀에 기록하기로 마음먹었다.

그래서 openpyxl 모듈을 사용해 기록해보아야겠다고 생각했다.
물론! openpyxl에서도 pandas나 numpy 등을 이용해 기록할 수 있다.
나는 그렇게 할 필요가 없기 때문에 그냥 내가 사용할 사용법들을 기록하겠다.

참고 : https://openpyxl.readthedocs.io/en/stable/pandas.html


openpyxl을 이용한 excel 기록하기 (쓰기)

1. 엑셀파일을 지정된 경로에 만드는 방법

import openpyxl

dir = 'C:\\Users\\1984\\Desktop\\openpyxl_Example.xlsx'

excel = openpyxl.Workbook()

excel_ws = excel.active # 현재 활성화된 시트 선택 
# (방금 만들었으니 시트가 1개밖에 없음 -> 자동으로 1개 활성화)

excel_ws.title = 'Pizza'  # 활성화된 시트 이름을 Pizza로 바꿔주었다.

excel.save(dir) # 절대 경로로 하지 않으면 현재 디렉토리에 그냥 파일이 생긴다.

이 때 유의할 점이 있다.

openpyxl을 이용해 시트를 생성하고 저장한다면 파일이 덮여씌워진다는 점이다.

2. 새로운 시트를 추가하기

create_sheet()

import openpyxl

dir = 'C:\\Users\\1984\\Desktop\\openpyxl_Example.xlsx'

# 경로에 있는 excel파일을 불러온다.
excel = openpyxl.load_workbook(dir)

# create_sheet() 메소드로 새로운 시트를 생성한다.
excel.create_sheet('chocolate')
excel.create_sheet('bread')

excel.save(dir)

3. 원하는 시트에 원하는 입력 추가하기

유의사항 (시트를 선택할 때)

excelFile.get_sheet_by_name('시트명') 은 사용했을 때 오류가 발생했다.
excelFile['시트명'] 을 추천한다.

import openpyxl

dir = 'C:\\Users\\1984\\Desktop\\openpyxl_Example.xlsx'

excel = openpyxl.load_workbook(dir)

# bread 시트를 선택
excel_ws = excel['bread']

# A1 셀을 직접 지정해 입력
excel_ws['A1'] = 'HONEY'

# 셀을 행과 열로 지정해 입력
excel_ws.cell(row = 2, column = 1).value = 'Cheese'

# 입력되어있는 바로 밑 행의 처음부터 입력된다.
excel_ws.append(['I', 'like', 'bread'])

excel.save(dir)

4. 특정 셀의 값을 삭제하거나 움직이기


import openpyxl

dir = 'C:\\Users\\1984\\Desktop\\openpyxl_Example.xlsx'

excel = openpyxl.load_workbook(dir)

excel_ws = excel['bread']

# 기존에 존재하던 행 앞에 공간 삽입
excel_ws.insert_rows(1)

# 기존에 존재하던 열 앞에 공간 삽입
excel_ws.insert_cols(8)

# 1 부터 3 까지의 행 삭제
excel_ws.delete_rows(1, 3) 

# A : C 까지의 열 삭제
excel_ws.delete_cols(1, 3)

# 범위를 지정해 행과 열 움직이기
excel_ws.move_range("D4:F10", rows=-1, cols=2)

excel.save(dir)

openpyxl을 이용한 엑셀 읽어오기

불러온 엑셀파일에서 값 읽어오기


import openpyxl

dir = 'C:\\Users\\1984\\Desktop\\openpyxl_Example.xlsx'

excel = openpyxl.load_workbook(dir)

excel_ws = excel['bread']

# bread 시트의 A1 셀 객체에 접근했다.  
A1 = excel_ws['A1']

# 행의 값을 숫자로
print(A1.row)

# 열의 값을 숫자로 (A = 1)
print(A1.column)

# A1에 들어있는 값
print(A1.value)

# A1이 어느 위치에 있는지
print(A1.coordinate)

# 이렇게 여러 범위로도 접근할 수 있다.
range_excel = excel_ws['A1' : 'C3']

profile
내가 만들어낸 것들로 세계에 많은 가치를 창출해내고 싶어요.

0개의 댓글