본문 바로가기

파이썬/Pywin32

파이썬 엑셀 자동화 정석 - 딴거 말고 pywin32 쓰세요!!

반응형

Chat GPT 본문 요약

주제: 파이썬으로 엑셀 자동화

핵심 내용:

  • 파이썬 엑셀 자동화를 위한 라이브러리 선택: 확장성을 고려하여 pywin32 추천
  • pywin32 장점: 엑셀뿐만 아니라 윈도우 모든 어플리케이션 컨트롤 가능
  • pywin32 설치 및 사용 준비: pip install pywin32, 주피터 노트북에서 import
  • pywin32 활용: 엑셀 객체 생성, 명령 보내기, 표 생성, 글씨 쓰기, 셀 조절, 그림 삽입, 파일 저장 등

기타:

  • 엑셀 자동화 관련 코드는 A-to-Z까지 온라인에 잘 정리되어 있지 않음
  • 코드 작성 시 설명이 명확하지 않은 경우가 많음
  • pywin32 외에도 openpyxl, xlsxwriter 등 다양한 라이브러리 존재

요약:

  • 글은 파이썬으로 엑셀 자동화를 위한 라이브러리 선택과 pywin32 설치 및 사용 방법을 소개합니다.
  • pywin32는 확장성이 뛰어나고 다양한 윈도우 어플리케이션을 컨트롤할 수 있다는 장점이 있습니다.

추가 정보:

 

설명에 앞서...

 

처음에 파이썬을 배우고 나서 이걸로 엑셀을 컨트롤 한다고 했을 때 조금 막막했다. 

파이썬도 겨우 배워놨는데 엑셀을 다루려니 또 다른 코드를 학습해야되는 스트레스가 몰려왔다.

 

 

무슨 라이브러리를 써야되지? 

 

새로운 코드는 또 어디서 배우지?

 

엑셀 텍스트 속성변경이나 셀 속성 변경은 어떻게 하지?

 

엑셀 자동화를 시켜버리고 싶은데 스레드나 멀티 프로세싱은 어떻게 사용하지? 

 

 

이렇게 하고 싶은건 많은데 관련 코드를 A-to-Z 까지 모아둔 곳이 잘 없었다. 

심지어 방문하는 사이트마다 코드를 쓸 때 왜 그렇게 써야 하는지도 명확한 설명이 안되어서 애를 먹었다. (나는 이해가 안되면 진행을 못하는 이해충이다..)

 

그래서 3년 동안 이것 저것 다 해 보고 이 사이트 저 사이트 뒤져본 뒤에 엑셀 컨트롤을 원하는대로 잘 할 수 있게 되어서 그 방법을 여기 공유하고자 한다. (물론 코드를 내가 잘 까먹기도 해서 기록으로 남기는 의미도 있다 ㅎㅎ)

 

 

파이썬 엑셀 첫 단계 - 라이브러리 선택

파이썬 라이브러리들 (https://www.linkedin.com/pulse/top-10-python-libraries-pranshu-jaryal)

 

사실 파이썬 엑셀 자동화를 쉽게 해주는 라이브러리는 꽤 많이 나와 있다. 

내가 아는 것만 해도 openpyxl, xlsxwriter... 등 사람들이 많이 쓰는 라이브러리도 있다. 

 

그런데 파이썬 라이브러리를 선택할 때 중요한 것은 확장성이다. 

 

무슨말인가 하면, 

예를들어, 내가 넘파이(Numpy) 라이브러리를 학습했다고 치자. 

그런데 만약 넘파이를 다 배운 뒤에 판다스를 새롭게 배워야 한다고 했을 때

넘파이와 판다스가 다루는 변수나 함수, 데이터 형식 등이 서로 일정부분 유사할 때에는 

판다스를 추가로 새롭게 배우는데 걸리는 시간이 많이 줄어들게 된다! 

 

즉, 내가 판다스와 호환되지 않는 쓸데없는 다른 라이브러리를 선택하지 않고, 

넘파이를 선택함으로써 얻어지는 향후 이득은 개발 시간과 스터디 시간의 단축인 셈이다. 

 

이것은 정말 개발인생 몇 년 지나고 나서 보면 꽤 큰 이득이다. 

내가 새로운 것을 학습하느라 진땀을 빼는 순간 라이브러리 하나 잘 선택한 내 친구는 벌써 개발 다 끝나서 휴가쓰고 놀러 다닐 수 있는 정도의 차이다. 

 

따라서 이런 효과를 고려했을 때,

 

나는 다른 라이브러리들 보다는 웬만하면 pywin32를 이용한 엑셀 컨트롤을 추천하고 싶다. 

 

pywin32 라이브러리는 파이썬으로 엑셀 뿐만 아니라 윈도우를 운영체제로 삼는 다른 모든 응용프로그램을 컨트롤 할 수 있게 해준다! 즉, 파워포인트, 아웃룩, 그리고 Synopsys나 Ansys사의 다른 어플리케이션들도 파이썬 컨트롤이 가능해진다. openpyxl만 배웠다면 나는 엑셀만 다루게 되지만, pywin32를 배우면 파이썬으로 내가 할 수 있는 것들이 훨씬 많아진다 ! 

 

아래는 pywin32로 컨트롤 할 수 있는 윈도우 어플리케이션 예시들이다.

라이브러리 하나 잘 배워서 이 모든것이 컨트롤 된다는 것이 놀랍지 않은가?! 

 

Pywin32로 컨트롤 가능한 어플리케이션 예시 1 - MS Software

 

Pywin32로 컨트롤 가능한 어플리케이션 예시 2 - 공학해석 Software

 

Pywin32로 컨트롤 가능한 어플리케이션 예시 3 - Autocad

 

Pywin32로 컨트롤 가능한 어플리케이션 예시 4 - Adobe 어플리케이션들...

 

위 어플리케이션들 외에도 pywin32가 접근할 수 있는 프로그램은 수도 없이 많다. 

 

 

파이썬 엑셀 두 번째 단계 - pywin32 설치 및 사용준비

설치는 간단하다. 아래와 같이 커맨드 창을 열어 pip install pywin32 를 쳐 주면 끝이다. (물론 엑셀은 이미 설치 되어 있겠지ㅣ....? )

Pywin32 설치과정

 

설치가 끝나면 다음은 코드 연습이니까 주피터 노트북을 실행하고 아래와 같이 임포트 해본다. 

# 라이브러리 임포트 
from win32com.client import Dispatch

# 엑셀 컨트롤 객체 생성 - 엑셀 설치된 경우에 실행 !!
excel = Dispatch("Excel.Application")

# 파워포인트 컨트롤 객체 생성 - 파워포인트 설치된 경우에 실행 !! 
powerpoint = Dispatch("PowerPoint.Application")

# 아웃룩 컨트롤 객체 생성 - 아웃룩 설치된 경우에 실행 !!
outlook = Dispatch("Outlook.Application")

 

위에서 알 수 있듯이 pywin32는 엑셀만을 컨트롤하기 위해 만들어진 라이브러리가 아니다. pywin32는 윈도우에 깔린 수많은 어플리케이션을 컨트롤 할 수 있다. 물론 ppt나 아웃룩이 설치가 안되었다면 지금은 그냥 주석처리 해놓자. 

 

이제 준비는 모두 끝났다. 위에서 선언한 excel 객체를 이용해 파이썬에서 Excel Application으로 명령을 보내고, 표를 만들고, 글씨를 쓰고, 셀 간격을 조절하고, 그림을 붙이고, 파일을 저장하는 등의 기능을 배워 볼 차례다. 

 

어렵지 않으니 하나씩 따라오기 바란다! 

 

 

파이썬 엑셀 컨트롤 - 엑셀 창 자동으로 띄우기!! 

https://hexa-coding.tistory.com/57

 

파이썬 엑셀 pywin32 - 엑셀 창 자동으로 띄우기

아래와 같이 excel 변수의 Visible 속성을 True로 설정하면 끝! 너무쉽다! from win32com.client import Dispatch excel = Dispatch("Excel.Application") # 엑셀 창 화면에 보이기 excel.Visible = True

hexa-coding.tistory.com

 

 

 

반응형