본문 바로가기
  • 여행하고 먹는 즐거운 콘지의하루
프로그래머의 프로그래밍 이야기/Web Programming

openpyxl을 사용하여 python 데이터 가져오기!

by 콘지 2022. 1. 31.

안녕하세요 오늘은 openpyxl 을 사용하여 python 데이터를 가져와 볼께요!

과정 중에 발생 한 xls / xlsx 의 호환 이슈 관련된 내용이 궁금하시면

3번 부터 확인 해보세요!  시작하겠습니다 :)

 

1. 사전작업

pip install openpyxl

때때로, 최신 버전의 버그가 안고쳐져 있는 경우 다른 버전으로 checkout 해야될 필요가 있습니다.

이때는 특정 버전으로 checkout 해서 설치하라고 가이드 하고 있습니다 :)

 

pip install -e hg+https://foss.heptapod.net/openpyxl/openpyxl/@3.0#egg=openpyxl

parser 설치가 완료되면,

가이드 된 api들을 사용하여, 내용을 작성해봅니다.

 

2. 엑셀 문서 변환해보기!

변환된 엑셀 문서를 가지고  한번 변환을 시작해 봅시다. 

변환하려는 엑셀의 문서는 다음과 같습니다.

openpyxl를 이용해서 엑셀을 변환하려면 엑셀의 형태를 잘 알고 있어야 합니다.

 

우선 제가 변환하려는 엑셀의 타입은

1. "Worksheet"라는 시트 네임을 가지고 있고요

2. A열에 데이터가 있는 상태

입니다.

 

우선 data가 잘 읽혀지는지 python을 통해 확인해볼께요

>>> from openpyxl import load_workbook
>>> wb = load_workbook(filename = 'excel_history.xlsx')

상기의 command를 사용해서 excel_history.xlsx 파일을 열어 보겠습니다.

>>> sheet = wb['Worksheet']
>>> print(sheet['A1'].value)
1                2                  3                 4               5

wb의 'Worksheet' 이름을 가진 시트에 접근해서 A1 행의 내용을  print 해봤습니다.

결과로는 1 2 3 4 5가 나오는 것을 확인할 수 있습니다.

 

3.  오류 발생 

python으로 추출하려는

excel 문서의 확장자는 xls 문서였습니다.

변환을 시도하는 중 다음과 같은 오류를 확인했습니다!

분노의 오류 화면

openpyxl.utils.exceptions.InvalidFileException: openpyxl does not support the old .xls file format, please use xlrd to read this file, or convert it to the more recent .xlsx file format.

즉, 오류 내용은 엑셀 파일의 버전이 맞지 않는다는 이야기

openpyxl 파서 매뉴얼을 보니 openpyxl은 xlsx 확장자만 지원한다는 게 명시되어 있다. 

내가 read 하려는 excel은 xls 파일이였고 이는 openpyxl이 지원하지 않는 다는 것을 확인했다.

xls과 xlsx 확장자의 차이 및 변환 하는 방법에 대한 부분은 다음 글을 참고

 

<xls, xlsx 확장자 차이 및 변환 방법> 

https://kunulee.tistory.com/manage/newpost/?type=post&returnURL=%2Fmanage%2Fposts%2F 

 

TISTORY

나를 표현하는 블로그를 만들어보세요.

www.tistory.com

 


이해가 잘되시나요? 

다음 포스팅에서는 해당 excel 문서를 파싱해서 

django의 database에 import 하는 작업을 해보겠습니다 ~

 

 

참고문서

- https://openpyxl.readthedocs.io/en/stable/usage.html : guide

반응형

댓글