회고,리뷰/회고,리뷰,정보공유

[python 라이브러리] xlwings - DRM 걸린 엑셀 파일 파이썬 작업

data_start_ 2024. 11. 12. 09:13

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

 

회사에서 파이썬을 이용해서 엑셀 문서를 데이터프레임으로 불러와서

업무 자동화를 하기 위한 함수를 작성할 때가 있습니다.

매크로를 사용하기에는 엑셀 파일이 무거워져서 느려지는 경우에 파이썬을 활용하면 

손쉽고 빠르게 할 수 있는 장점이 있죠.

 

하지만 DRM 보안 프로그램이 깔려 있는 경우,

.xlsx, .csv, .txt 확장자를 가진 대부분의 문서 파일이 암호화가 걸리기 때문에

판다스 데이터프레임으로 바로 읽어오지 못하는 문제가 발생합니다.

 

이를 해결할 수 있는 파이썬 라이브러리가 바로 xlwings인데요.

엑셀 파일을 실행해서 화면에 보이는 데이터를 그대로 가져오는 방식이라서

암호화가 되어있는 엑셀 파일도 불러올 수 있다고 합니다.

 

import xlwings as xw
import pandas as pd 

# DRM 보안 걸린 엑셀을 실행
excel_nm = '20240927_dayily_report.xlsx'
book = xw.Book(excel_nm)

# 시트에 있는 데이터 읽어오기
df_sheet_1 = book.sheets(1).used_range.options(pd.DataFrame)

# 피봇테이블 만들기
df_sheet_1_pivot = pd.pivot_table(df_sheet_1, index=['genre_gubn'], columns=['base_date']
                                  , values='buy_amt2', aggfunc='sum')
                                  # , margins=True, margins_name="총계")
                                  
# 시트에 값 붙여넣기
book.sheets(1)['G1'].value = df_sheet_1_pivot