본문 바로가기
Artificial Intelligence/60. Python

[PYTHON] xlwings로 엑셀을 직접 제어하는 실전 자동화 가이드

by Papa Martino V 2025. 7. 22.
728x90

xlwings로 엑셀을 직접 제어하는 실전 자동화 가이드
[PYTHON] xlwings

 

1. xlwings란 무엇인가?

xlwings는 Python을 통해 Microsoft Excel을 제어할 수 있게 해주는 강력한 오픈소스 라이브러리입니다. 단순 데이터 입출력을 넘어, Excel에 실시간으로 명령을 전달하고 결과를 받는 쌍방향 자동화가 가능하다는 점에서 openpyxl, pandas와는 차별화됩니다.

Excel에서 Python 함수를 직접 호출하거나, VBA를 대체하는 자동화를 구현할 수 있어, 비즈니스 자동화와 리포트 생성에서 특히 유용합니다.

2. 설치 및 필수 조건

  • Python 3.7 이상
  • Windows 또는 macOS (엑셀이 설치된 환경)
  • Microsoft Excel (Office 365, 2016 이상 권장)
pip install xlwings

또한 Excel에서 매크로 기능을 쓰고자 한다면 xlwings addin install 명령으로 애드인 설치가 필요합니다.

3. 주요 기능 요약 비교

기능 xlwings openpyxl pandas
실시간 Excel 조작 지원 미지원 미지원
엑셀 열려 있는 상태에서 제어 가능 불가 불가
차트, 도형 제어 가능 제한적 불가
VBA 대체 가능성 높음 낮음 낮음
속도 보통 빠름 빠름

4. 기본 사용 예제

import xlwings as xw

wb = xw.Book()  # 새로운 엑셀 파일 열기
sheet = wb.sheets[0]
sheet.range('A1').value = 'Hello from Python'
      

현재 실행 중인 Excel을 자동으로 열고 A1 셀에 값을 입력합니다.

5. Excel → Python 데이터 가져오기

엑셀 셀 범위의 값을 Python으로 가져올 수 있습니다.

values = sheet.range('A1:A5').value
print(values)
      

반대로 DataFrame을 직접 입력할 수도 있습니다.

import pandas as pd
df = pd.DataFrame({'이름': ['철수', '영희'], '점수': [85, 92]})
sheet.range('B1').value = df
      

6. VBA 매크로 대체하기

xlwings는 엑셀 함수처럼 Python 함수를 호출할 수 있습니다. 이를 위해선 애드인 설치 후 @xw.func 데코레이터를 사용합니다.

import xlwings as xw

@xw.func
def double_number(x):
    return x * 2
      

엑셀에서 셀에 =double_number(10) 입력 시 결과는 20이 됩니다.

7. 자동 보고서 생성

미리 만들어진 템플릿을 불러와 내용을 채우고 저장하는 작업에 최적화되어 있습니다.

template = xw.Book('report_template.xlsx')
sheet = template.sheets['매출']
sheet.range('B2').value = '2025년 7월'
sheet.range('B3').value = 125000000
template.save('monthly_report.xlsx')
      

8. 실무 활용 사례

  • 실시간 데이터 입력: 실무자 Excel에 자동 업데이트되는 보고서 구축
  • 매출 통계 자동화: 매월 템플릿 복사 후 수치 자동 반영 및 저장
  • 업무 자동화 UI 구성: Excel 버튼 클릭 시 Python 함수 호출
  • 매크로 치환: 반복적인 VBA 작업을 Python 스크립트로 대체

9. 자주 묻는 질문

Q. Excel 없이 사용할 수 있나요?
A. 아니요. xlwings는 Excel 프로그램이 설치되어 있어야 동작합니다.
Q. 리눅스에서도 사용 가능한가요?
A. Excel 자체가 Windows/Mac 전용이므로 xlwings는 리눅스에서는 사용이 제한됩니다.
Q. 여러 시트를 동시에 제어할 수 있나요?
A. 물론 가능합니다. wb.sheets['시트명'] 방식으로 접근하면 됩니다.
Q. openpyxl보다 나은 점은?
A. 실시간 제어, 인터페이스 연동, VBA 대체 가능성에서 확연한 차이가 있습니다.

10. 마무리

xlwings는 단순 엑셀 파일 처리를 넘어, Excel을 실시간으로 제어하고 상호작용할 수 있는 고급 자동화 도구입니다. 엑셀을 주로 다루는 직장인, 데이터 분석가, 백오피스 자동화가 필요한 개발자에게 강력한 무기가 될 수 있습니다.

만약 아직도 반복되는 수작업 보고서나 VBA 코드에 지쳐 있다면, 지금 당장 xlwings를 도입해보세요. 업무의 생산성과 정확성이 비약적으로 향상될 것입니다.

출처

728x90