안녕하세요 오늘은 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
이해가 잘되시나요?
다음 포스팅에서는 해당 excel 문서를 파싱해서
django의 database에 import 하는 작업을 해보겠습니다 ~
참고문서
- https://openpyxl.readthedocs.io/en/stable/usage.html : guide
'프로그래머의 프로그래밍 이야기 > Web Programming' 카테고리의 다른 글
xls xlsx 차이점, 변환하는법 (0) | 2022.01.29 |
---|---|
django 에서 excel을 database로 import 해보자! (0) | 2022.01.29 |
댓글