[Tip] win32com 모듈을 사용한 엑셀 제어

2021. 4. 20. 16:16·[Language] - Python
# Excel.Application COM 인스턴스 생성
excel = win32.Dispatch("Excel.Application")
excel.Visible = True

cell = None

# 파일 열기
workbook = excel.Workbooks.Open(self.path)

# 시트 순회
for worksheet in workbook.Worksheets:
	print('This sheet name is .. ', worksheet.Name)  # 시트 이름 출력
	cell = worksheet.UsedRange.Find(self.tag)  # 워크시트의 Range 인스턴스에서 찾기
	if not cell:
		continue
	worksheet.Range(str(cell.address).replace("$", '')).Select()

# 찾고자 하는 셀이 없으면 종료
if not cell:
	excel.Workbooks.Close()

위 코드는 파이썬에서 엑셀 파일을 제어하기 위한 openpyxl 모듈이 아닌 엑셀 프로그램 자체를 제어하는 코드이다. win32com 모듈을 사용하면 ActiveX 기반의 프로그램들을 직접 제어할 수 있다. Dispatch() 메소드의 인자로 제어하고자 하는 프로그램에 해당하는 문자열을 대입하면 해당 프로그램의 클래스 타입의 인스턴스 (여기서는 excel)을 얻을 수 있다.

 

win32com 모듈에 대한 python docs가 잘 나와있지 않아서 마이크로소프트에서 제공하는 Docs를 참고했다. 이곳에서 제공되는 문서 또한 python 예제는 없지만 그나마 다른곳에 비해 설명이 친절하다. 정 모르겠으면 python example을 reference해보는 방법도 있다. 

 

Excel 이외의 다른 프로그램 문서

참고로 해당 Docs에서 상위 레벨로 올라가면 엑셀 이외에도 다른 프로그램에 대한 문서도 제공하니 필요하면 참고하면 된다.

'[Language] - Python' 카테고리의 다른 글

Python 객체의 생명 주기와 메모리  (0) 2021.08.02
[Tip] 딕셔너리 Fancy하게 다루기  (0) 2021.05.28
제너레이터 (Generator)  (0) 2021.04.14
함수형 프로그래밍  (0) 2021.03.25
[Tip] if문 분기와 삼항연산자가 사용하기 싫을 때  (0) 2021.03.24
'[Language] - Python' 카테고리의 다른 글
  • Python 객체의 생명 주기와 메모리
  • [Tip] 딕셔너리 Fancy하게 다루기
  • 제너레이터 (Generator)
  • 함수형 프로그래밍
Bebsae
Bebsae
  • Bebsae
    뱁새zip
    Bebsae
  • 전체
    오늘
    어제
    • 분류 전체보기 (108)
      • [DevOps] - Kubernetes (5)
      • [DevOps] - AWS (1)
      • [AI] - Machine Learning (19)
      • [AI] - Neural Network (7)
      • [CS] - Network (2)
      • [CS] - Data Structure (3)
      • [CS] - Design Pattern (6)
      • [Language] - Python (15)
      • [Library] - Numpy (7)
        • Quick Start (5)
        • API (2)
      • [Framework] - Django (3)
      • [Framework] - QGIS (6)
      • [Framework] - PyQT (4)
      • [Mathematics] - Linear Alge.. (14)
      • [Mathematics] - Statistical (2)
      • [ETC] - Python (3)
      • [ETC] - C++ (1)
      • [ETC] - Linux (1)
      • 논문 (5)
      • 회고록 (3)
      • 생산성 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    Linear
    Machine
    신경망
    Python
    교차검증
    분해
    Convolution
    numpy
    Learning
    decomposition
    linearalgebra
    머신러닝
    디자인패턴
    QGIS
    algebra
    RNN
    선형대수
    MachineLearning
    DEEPLEARNING
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Bebsae
[Tip] win32com 모듈을 사용한 엑셀 제어
상단으로

티스토리툴바