프로그래밍/Python

[Python]Excel로 데이터 내보내기

guitarhero 2017. 10. 13. 16:39
728x90

오라클에서 데이터를 읽어와서 글자수를 센 후 그 단어 수를 세팅해서 엑셀로 내보내려고 

xlsxwriter 를 사용해서 엑셀 내보내기를 했다. 


시키는대로 했지만 오류가 뙇..!!!!!!!!


UnicodeDecodeError: 'utf8' codec can't decode byte 0xa1 in position 52: invalid start byte

라는 에러가 나왔다.... 검색을 해보니 ascii코드관련 에러인데 



이것과 관련된 것같다. 

그래서 우선 엑셀을 쓰기위해서


import sys

reload(sys)  

sys.setdefaultencoding('Cp1252')

위와같은세팅을 해줬더니 파일은 써졌는데...

Representative’ ->Representative¡¯


이렇게 깨져서 나왔다. 

우선 오늘은 엑셀아웃풋까지 했으니까 인코딩문제는 다시 한번 체크 해봐야겠다. 


근데 위와같은 엑셀 아웃풋 문제는 토드 9버전에서도 발견되었다. 물론 에러메시지가 한정적이라서 정확히 이 에러인지는 알 수 없지만

내가 사용중인 12버전에서는 에러가 나지않고 정상적으로 엑셀다운로드가 되는 것을 보면 해당 문제일 가능성이 크다.


그래서 해당 관련 자료를 찾아보니 해결방법이 있었다. 

우선은 첫번째로 

import os 

os.environ["NLS_LANG"] = ".AL32UTF8"  #한글 UTF-8설정 CP949의 경우 .KO16MSWIN949


[참조] https://haandol.wordpress.com/2014/06/25/cx_oracle-insert-unicode/


두번째로는 

import sys

reload(sys)  

sys.setdefaultencoding('utf8')

아래 처럼 세팅 하는 것이다. 

[참조] https://stackoverflow.com/questions/21129020/how-to-fix-unicodedecodeerror-ascii-codec-cant-decode-byte


이렇게 하면 python에서 ascii가 깨지는 오류를 잡을 수 있다. 

728x90