컴퓨터-엑셀-파이썬
파이썬-엑셀

엑셀은 가장 많이 사용하는 오피스 프로그램입니다. 많은 사람이 사용하는 프로그램인 만큼 좋은 기능이 많은 프로그램인데요. 매크로 등의 자동화 기능도 많이 갖고 있지만, 파이썬을 이용하면 더 효과적으로 다룰 수 있습니다. 파이썬으로 엑셀 다루기, 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 패키지를 이용해서 자동화할 수 있습니다. 파이썬을 이용하면 엑셀의 범위를 넘어서는 부분까지도 구현이 가능합니다. 자세한 내용은 차차 다루어 보겠습니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기