goodthings4me.tistory.com
엑셀 암호 해제 또는 암호를 설정하는 방법은 간단하다. 그러나 용량이 큰 여러 엑셀 파일에 암호가 걸려있고 함수 수식과 피벗도 설정되어 있어서 엑셀 파일 로딩이 오래 걸리는 경우에는 엑셀 암호를 제거하고 사용해야 할 때가 있다.
엑셀 암호 해제 프로그램 만들기
여러 엑셀 파일에 동일한 엑셀 암호가 있을 경우, 특히 용량이 큰 파일에 암호가 걸려있을 경우, 함수 수식이 많거나 피벗이 설정되어 있어서 엑셀 파일 열때 시간이 오래 걸리는 경우 등, 이런 상황에서 엑셀 암호를 제거하고 사용하고 싶을 때 암호를 일괄적으로 제거할 수 있는 프로그램을 파이썬으로 만들어 보았다.
우선 엑셀 파일에서 암호를 설정하고 해제하는 방법을 알아보고 파이썬 코드를 활용하여 암호를 일괄 제거하는 방법을 설명한다.
엑셀 암호 설정하는 방법
엑셀 좌측 상단 "파일"을 클릭하고 "다른 이름으로 저장 > 찾아보기"를 클릭한다.
- 하단 저장 버튼 옆의 "도구"를 클릭하여 "일반옵션"을 선택한다.
- 열기 암호에 암호를 입력하고 확인을 클릭한다. (쓰기 암호를 설정하고 싶으면 여기도 암호를 입력한다.)
- 암호 확인 팝업창이 나오면 암호를 다시 입력한다. (열기 암호를 다시 입력하십시오)
- 같은 이름의 엑셀 파일이 있다는 메시지가 나오는데 그냥 덮어쓰기 하면 된다.
엑셀 암호 해제 방법
암호 해제 방법은 설정 방법과 같으며, 도구 > 일반 옵션 클릭 후 암호를 모두 삭제한 후 저장을 하면 된다.
파이썬으로 엑셀 암호 제거 프로그램 소스 코드
윈도우 탐색기 excel 폴더에 있는 엑셀 파일
[여러 엑셀 파일 암호를 해제시키는 소스코드]
▷ msoffcrypto 모듈 설치
pip install msoffcrypto-tool
- 설치된 버전은 msoffcrypto-tool 5.0.0
- 참고 : https://pypi.org/project/msoffcrypto-tool/
▷ 파이썬 코드
import os
import msoffcrypto
# from glob import glob
def xl_pw_decript(raw_path, new_path):
xlfile_lst = os.listdir(raw_path)
print(xlfile_lst)
# ['창호 샷시 견적.xlsx', '창호 샷시 견적1.xlsx', '창호 샷시 견적2.xlsx']
for xlfile in xlfile_lst:
# print(raw_path + xlfile)
encrypted = open(raw_path + xlfile, 'rb')
file = msoffcrypto.OfficeFile(encrypted)
file.load_key(password='1234') # 사용 암호 입력
with open(new_path + xlfile, 'wb') as f:
file.decrypt(f)
print(f'암호 해제 파일({xlfile}) 생성!')
encrypted.close()
raw_path = './excel/'
new_path = './test/'
xl_pw_decript(raw_path, new_path)
- "excel" 폴더에서 읽은 전체 파일을 대상으로 처리, 엑셀 파일 읽기는 glob(raw_path + '*.xls*') 코드도 가능
- file.load_key(password='1234') 코드의 '1234' 부분에 엑셀 파일의 암호를 입력한다.
▷ 터미널 실행 결과
암호 해제 파일(창호 샷시 견적.xlsx) 생성!
암호 해제 파일(창호 샷시 견적1.xlsx) 생성!
암호 해제 파일(창호 샷시 견적2.xlsx) 생성!
'코딩 연습' 카테고리의 다른 글
문자열에 \xa0 있을 경우 제거하는 방법 (0) | 2022.12.02 |
---|---|
공동주택 단지코드(아파트 코드) 추출 - 파이썬 API 활용 (0) | 2022.11.30 |
Pandas - 데이터 분석용 파이썬 라이브러리 "판다스" #1 (0) | 2022.10.08 |
엑셀 시트 분리 저장 - 엑셀 파일의 시트를 분리하여 저장하기 (2) | 2022.09.25 |
유튜브 음원 추출 다운로드(유뷰브 음악 추출하는 2가지 방법) (0) | 2022.09.19 |
댓글