Python을 이용한 개발을 하다보면 아무래도 데이터를 많이 핸들링을 하게 되다보니 간혹 데이터를 엑셀로 내려야 하는 경우가 있다.
Python에서 엑셀을 핸들링 할 수 있는 모듈과 방법이 어러가지 있지만 오늘은 OpenPyXl과 XlsxWriter 두가지 모듈에 대해서 간단한 팁을 공유 한다.
관련해서 포스팅 시간은 좀 됐지만 4가지 엑셀 관련 라이브러리를 간단하게 비교한 내용은 다음 포스팅을 참고 하기 바란다.
https://libsora.so/posts/python-excel-library/
파이썬 엑셀 쓰기 라이브러리 비교 · /usr/lib/libsora.so
subtitle: 무엇을 골라야 후회하지 않는가? 리눅스에서 굴러가는 파이썬 기반의 통계 도구를 만든적이 있다. 리눅스에서도 굴러가는 엑셀 라이브러리를 몇개 찾아봤고 직접 써본 다음에 정리했다. 찾아본 엑셀 라이브러리는 다음과 같다. 이중에서 내가 직접 사용해본것은 xlwt, OpenPyXL, XlsxWriter이다. (사용해본 순서로 적었다.) supoort xlsx xls와 xlsx의 가장 큰 차이는 행, 열의 최대 갯수가 65535라는거다. 몇만건의
libsora.so
앞서 언급한 OpenPyXl과 XlsxWriter 두가지 라이브러리중 뭘 써도 간단하게 쓸거면 크게 문제가 되지 않는데, 문제는 배포시점을 고려해야 한다는 점이다.
뭐 프로그램 개발해서 로컬에서 쓸꺼면야 크게 문제 되지 않겠지만, 빌드해서 실행파일을 배포하는 경우라면 빌드후 파일 크기를 고려할 필요가 있다.
pyinstaller를 이용해서 실행파일을 만드는 경우 위의 두 모듈은 실행파일 사이즈에서 급격한 차이를 보인다.
아래의 샘플 소스를 살펴보면, 둘다 간단하게 list 데이터를 엑셀 파일로 만드는 간단한 소스이다.
실제로 이 두 파일을 pyinstaller를 이용해서 빌드해보면 빌드 시간과 생성된 실행파일의 크기에 엄청난 차이가 발생한다.
excelTest.exe 파일이 OpenPyXl 라이브러리를 활용한 소스의 실행파일, excelTestWithXlsxWriter.exe 파일이 XlsxWriter 라이브러리를 활용한 소스의 실행파일로 실행파일의 크기가 40배이상 차이가 난다.
설치구성된 Python 환경에 따라 사이즈는 차이가 날 수 있어서 절대적인 파일 사이즈는 중요한게 아니고 또한 파이썬이 인터프린터 언어다 보니 설치 안된 컴퓨터에서 실행가능하게 빌드하기 위해 빌드시 자동 포함되는 부분들을 감안한다고 하더라도 OpenPyXl 라이브러리의 실행파일 크기는 상식적이지 않아 보인다.
XlsxWriter를 이용한 excelTestWithXlsxWriter.exe 의 경우에도 저렇게 간단한 소스를 빌드한 실행파일의 크기가 7MB 정도로 커지는 부분이 있기는 하지만 언어 특성을 고려하면 저정도야 뭐...
OpenPyXl 라이브러리의 경우 파일 사이즈를 줄일 수 있는 방법을 찾지 못했다, 지금 프로젝트에서는 WinPy를, 개인 노트북에서는 아나콘다를 쓰지만 pyinstaller에 -F 옵션만 주고 했을때 비슷한 파일사이즈가 나오는 것 봐서는 모듈자체가 dependency 한 부분들이 많고 이를이 다 포함되다 보니 생기는 현상으로 유추해 볼 수 있을 것 같다.
너무 간단한 소스이긴 하지만, 그럼에도 불구하고 돌려보고 싶은 분들을 위해서...
빌드는 pyinstaller -F [파일명] 으로...
댓글