반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

 

오늘은 파이썬으로 엑셀(Excel)을 다룰 때 가장 많이 사용하는 openpyxl 패키지에 대해 알아보겠습니다.

엑셀은 회사에서 업무할 때 정말 많이 사용하는 오피스 프로그램이니 알아두시면 많은 도움이 되실거라 생각합니다!

 

지난 시간에 배운 내용과 관련된 코드는 설명없이 넘어 갈 예정이니, 아래 내용을 모르신다면 읽고 오시는 것을 추천드립니다.

 

2021.05.28 - [파이썬 패키지/사무자동화] - [Python Excel] 파이썬으로 엑셀 다루기 1편_openpyxl 패키지 소개 및 시트 생성/변경

 

 


 

1. 엑셀 파일 불러오기

 

보통 엑셀을 처음부터 만들기 보다는 만들어진 엑셀 파일을 불러와서 사용하는 경우가 많을 텐데요. 

그래서 지난 시간 저장했던 "test.xlsx" 파일 불러오는 코드를 통해 엑셀 파일 불러오는법을 배워보겠습니다.

 

from openpyxl import load_workbook

wb = load_workbook("test.xlsx")

ws = wb["First Sheet"]

 

먼저 openpyxl 패키지의 새로운 모듈을 불러와 줘야합니다. 지난 시간 사용했던 Workbook이 새 엑셀 파일을 만드는 모듈이라면, load_workbook은 엑셀 파일을 불러오는 모듈입니다.

 

불러온 후 wb["시트명"]으로 사용할 시트를 지정해주어야 시트의 셀들을 다룰 수 있으니 꼭 잊지 말아주세요.

 

 

2. 셀 입력

 

엑셀의 칸 하나를 셀(cell)이라 하고, 수 많은 셀로 이루어 져있습니다. 사람이 셀에 데이터를 입력해주려면 마우스로 원하는 셀을 찍고 입력하면 되지만, 컴퓨터는 불가능합니다. 그래서 행(row)과 열(column)로 이루어진 엑셀을 인덱싱(indexing)을 통해 원하는 좌표를 지정하고 데이터를 입력해 주어야 하죠.

 

 

셀을 인덱싱 하는 방법은 위와 같이 두 가지 방법이 있으며, for문을 사용해서 데이터를 입력하는 경우가 종종 있으니, cell( ) 함수를 이용하는 방법에 익숙해지시는게 좋을 듯 합니다.

 

# A1 셀에 값 입력
ws["A1"] = 5

# B1 셀에 값 입력 (추천하는 방법)
ws.cell(row=1, column=2, value=70)

# 이렇게도 가능합니다
ws.cell(1, 2, value=70)

 

 

3. 셀 삭제 (Delete)

 

셀에 데이터를 입력하는 것을 배웠으니, 삭제하는 방법도 배워보겠습니다.

사실 셀 삭제는 입력을 다시 하면서 아무 값도 넣어 주지 않으면 됩니다. 이렇게 말이죠.

 

ws["A1"] = ""

 

다음으로는 행과 열 단위로 삭제하거나 범위로 셀을 삭제하는 방법을 알아보겠습니다.

 

1) 행 삭제

# 1번행 1개 삭제
ws.delete_rows(1)

# 1번행부터 총 3개의 행 삭제 (1,2,3행 삭제)
ws.delete_rows(1, 3)

 

2) 열 삭제

# 3번열 1개 삭제
ws.delete_cols(3)

# 3번열부터 총 3개의 열 삭제 (3,4,5열 삭제)
ws.delete_cols(3, 3)

 

 

4. 셀 공백 추가 (Insert)

 

데이터들 사이에 공백을 추가하고, 새로운 데이터를 입력해야 하는 경우가 있죠? 엑셀의 행 삽입, 열 삽입 같은 기능말입니다.

 

위에서 배웠던 셀 삭제 함수의 delete가 insert로 바뀌었을 뿐 그 개념은 같습니다.

 

1) 빈행 추가

# 2번행에 빈행 삽입
ws.insert_rows(2)

# 1번행부터 총 3개의 빈행 삽입
ws.insert_rows(1, 3)

 

2) 빈열 추가

# 3번열에 빈열 삽입
ws.insert_cols(3)

# 3번열부터 총 3개의 빈열 삽입
ws.insert_cols(3, 3)

 

5. 단일 셀, 셀 범위 이동 (Ctrl+X 후 Ctrl+V)

 

입력된 내용을 그대로 다른 곳으로 이동시켜야 하는 경우는 아래의 함수를 이용합니다.

엑셀에서 마우스로 원하는 범위를 지정 후, 잘라내기 후 원하는 위치에 붙여넣기 하는 개념과 같습니다.

 

#D1 셀의 내용을 오른쪽으로 1열 이동시킴
ws.move_range("D1", cols=2)


#D4부터 F10 영역의 데이터를 위쪽으로 1행, 오른쪽으로 2열 이동시킴
ws.move_range("D4:F10", rows=-1, cols=2)

 

반응형

+ Recent posts