본문 바로가기
IT/Python

[Error] zipfile.BadZipFile: File is not a zip file - drm 피하기 / xlwings

by 성준하이 2024. 4. 29.
반응형

Python 에서 특정 파일을 읽으려고 했는데 아래와 같은 에러가 발생했다.

 

zipfile.BadZipFile: File is not a zip file

 

내용은 zip file 에러인듯 하다.

 

말그대로 zip 파일을 열지 못하는데 확인해보니 파일이 DRM이 걸려있어서 특정 프로그램으로 읽지 않는 이상 파일을 읽을수가 없었다.

DRM에 대해서는 아래 참고 포스팅 참고 바란다.

 

해결법은 Python 에서 openpyxl 를 사용해서 excel 파일을 읽었는데 이러면 못열고

xlwings 를 사용해서 파일을 읽어줬다.

 

xlwings 이란?
openpyxl, xlsxwriter와 xlwings 차이?
openpyxl xlsxwriter 는 Excel File의 포맷을 지원해주는 라이브러리.

https://www.xlwings.org/

 

Python in Excel alternative: Open. Self-hosted. No limits.

Write add-ins, custom functions (UDFs), and macros with Python in Excel. Run locally or on your infrastructure with all the packages you need.

www.xlwings.org

 

openpyxl 코드와의 차이점은 아래와 같다.

openpyxl import openpyxl as op

# 불러오기
file = QFileDialog.getOpenFileName(self, "test.xlsx",'', "Exel files(*.xlsx);; 모든 파일(*)")

# workbook 지정하기(작업할 파일 지정)
workbook = op.load_workbook(filesave[0])
worksheet = workbook.active
..이하 생략
xlwings import xlwings as xw

# 불러오기
file = QFileDialog.getOpenFileName(self, "test.xlsx",'', "Exel files(*.xlsx);; 모든 파일(*)")

# workbook 지정하기(작업할 파일 지정)
workbook = xw.Book(filesave[0])
# 현재 작업할 시트 지정(번호로 지정. 몇 번째 시트인지)
worksheet = workbook.sheets(1)
..이하 생략

 

코드에서 workbook 에 대한 설명은 아래 참고 포스팅 참고 바란다.(개념만 참고)

 


 

참고 포스팅

https://thenicesj.tistory.com/915

 

DRM 이란?

DRM 은 Digital Right Management 의 약자로 직역을 하면 디지털 권리 관리 이다. 좀더 IT 적으로 해석을 하면 정보보호 기술 중 하나로 암호화 기술을 이용해서 비허가 사용자로부터 디지털 컨

thenicesj.tistory.com

 

https://thenicesj.tistory.com/916

 

Workbook 사용법

자바에서는 Word, Excel, Power Point 파일등의 파일을 다루기 위한 POI 라는 라이브러리가 존재한다.아파치 소프트웨어 재단에서 만든 라이브러리로 Microsoft Office 파일을 자바 언어로 읽고 쓰는 기능

thenicesj.tistory.com

 

반응형

댓글