파이썬으로 엑셀(xlsx) 파일 다루기, openpyxl 사용법!

2019. 11. 28. 06:30

엑셀을 가장 많이 사용하는 오피스 프로그램 중의 하나이다. 그 동안 계속해서 버전업을 하고 많은 사람들이 사용하는 프로그램인 만큼 좋은 기능들이 많은 프로그램이다. 매크로 등의 자동화 기능도 많이 갖고 있지만, 파이썬을 이용하면 엑셀을 더 효과적으로 다룰 수 있다.

오늘은 파이썬으로 엑셀 다루기, openpyxl 사용법에 대해서 알아보도록 하겠다.


openpyxl



openpyxl은 파이썬에 있는 엑셀 관련 패키지 중의 하나이다. xlwings, xlsxwriter 등도 있지만, openpyxl이 가장 많이 쓰인다. 엑셀이 없어도 엑셀 파일을 읽고 쓸 수 있어 유용하다. pip install openpyxl을 명령프롬프트나 터미널 창에서 실행하면 손쉽게 설치할 수 있다.


openpyxl을 사용하는 기본적인 방법을 알아보면 아래와 같다. 워크북 -> 워크시트 -> 셀 순으로 읽는 방법을, 셀 -> 워크시트 -> 워크시트 순으로 쓰는 방법을 알아보도록 하자.


1. 워크북(엑셀 파일) 읽기

> import openpyxl

> wb = openpyxl.load_workbook('test.xlsx')

load_workbook함수를 이용하면 엑셀 파일을 읽을 수 있다. 파라미터로 넣을 수 있는 값들이 있는데, "KeyError: 'r'" 가 발생하여 read_only=True옵션을 넣으니 엑셀 파일을 읽을 수 있었다. 하지만, 이후에 워크시트를 읽으려고 하니 동일한 문제가 발생했다. 엑셀 파일에 문제가 있는 듯 한데, 시트이름의 한글을 영문으로 바꾸기 잘 읽을 수 있었다.


2. 워크시트 읽기

> wb.get_sheet_names() # 엑셀 파일의 워크시트 이름들 불러오기

> test = wb.get_sheet_by_name("이름")   # '이름'이라는 워크시트 불러오기

> test = wb.get_active_sheet()  # 활성시트 가져오기, 활성시트란 엑셀파일을 열었을 때 default로 열리는 시트이다.

워크북(엑셀파일)을 로드한 후에는 필요한 워크시트를 불러 온다. 워크시트 이름으로 쉽게 로드할 수 있다.


3. 셀값 불러오기

> test['A1'].value

> test.cell(row=1,column=1).value

> test["A1:C3"]

> test.max_column

> test.max_row

> test.dimensions

특정 셀을 선택하고 .value를 호출하면 해당 셀의 값을 가져올 수 있다. cell함수를 이용해 위치를 지정해서 값을 가져오는 것도 가능하다. 엑셀에서 함수를 입력하듯이 하여 여러 셀을 선택할 수도 있다. 영역에 포함되는 셀들이 tuple 자료형으로 반환된다. max_column과 max_row는 해당 시트의 최대 칼럼과 최대 행의 위치를 반환해준다. 엑셀 시트의 구조를 파악하기에 유용한 변수이다.


문서작업


이제 엑셀 파일에 쓰는 방법에 대해서 알아보도록 하자.


4. 셀에 값 쓰기

> test['A1'] = "hahaha"

딕셔너리 자료형처럼 셀의 위치를 키값으로 특정셀에 값을 입력할 수 있다.


5. 워크시트 만들기

> wb.create_sheet(index = 1, title="New Sheet")

create_sheet함수를 이용해서 워크시트를 만들 수 있다. index와 title로 위치와 워크시트 이름 지정이 가능하지만, 생략할 수 있다.


6. 엑셀 파일 만들기

> wb.save("파일명.xlsx")

save함수를 이용해서 엑셀 파일을 저장할 수 있다.


이 외에도 엑셀에서 하는 대부분의 일들을 openpyxl을 이용해서 할 수 있다. 심지어 차트를 그리는 것도 가능하다. 자세한 내용은 아래 openpyxl 참조 싸이트를 참조하도록 하자.
( 참조: openpyxl 싸이트 바로가기 )


파이썬을 직접 활용하는 것만큼 효과적인 공부는 없다. 그래서 파이썬을 활용해서 할 수 있는 일들을 정리해보았다. 자세한 내용은 아래 포스팅을 참조해보자.
( 참조: 파이썬 활용, 파이썬 프로젝트로 할 수 있는 일들을 알아보자! )


오늘은 이렇게 파이썬으로 엑셀 파일 다루기, openpyxl사용법에 대해서 알아보았다. 사용법은 그리 어렵지 않았다. 매번 하는 작업들이 있다면, openpyxl 패키지를 이용해서 자동화할 수 있다. 파이썬을 이용하면 엑셀의 범위를 넘어서는 부분까지도 구현이 가능하다. 자세한 내용들은 차차 다루어보도록 하자.

댓글()
  1. 보리멸 2020.05.28 14:32 댓글주소  수정/삭제  댓글쓰기

    openpyxl 패키지를 깔고 워크시크 이름 출력하기를 해보는데 계속 zipfile.BadZipFile: File is not a zip file 이 에러 혹은, 파일 디렉토리가 잘못됬다는 에러가 나네요 ㅠㅠ
    구글에 있는 것들 모두 찾아서 해봤는데도... 안되는데 뭔가 설치를 잘못한걸까요..?
    아예 초보라 글남겨봅니다..