본문 바로가기

코딩/업무자동화

[파이썬/업무자동화] win32com.client 사용해서 엑셀 사용하기 기초

반응형

* Win32com.client로 엑셀 다루기 포스팅

1편 : 2021.11.23 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 사용해서 엑셀 사용하기 기초

2편 : 2021.12.14 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 사용해서 엑셀 시트 다루기

3편 : 2021.12.22 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 사용해서 엑셀 차트 다루기

4편 : 2021.12.30 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 사용해서 엑셀 셀서식 지정하기

5편 : 2022.01.02 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 사용해서 엑셀 영역 선택하는 방법 4가지 

6편 : 2022.01.17 - [코딩/업무자동화] - [파이썬/업무자동화] win32com.client 엑셀 파일 저장 및 옵션


  이번 포스팅은 win32com.client 모듈을 통해 엑셀을 다루는 방법을 정리해본다. win32com 은 OpenPyxl과 다르게 실행상태에서 파이썬을 사용할 수 있으며, 사용자가 직접 엑셀을 사용하는 것처럼 좀더 엑셀 기능에 가깝게 엑셀을 코드로 

제어할 수 있다.

 

 

1. import

 

  win32com에서 제공하는 client라는 모듈을 사용하면 엑셀뿐만 아니라 Microsoft에서 제공하는 Outlook, Word, PPT 등을 파이썬으로 제어할 수 있다. 이번 포스팅은 엑셀을 다루는 방법이므로 다른 Application은 필요할 때 정리해 볼 예정.

 

<코드>

import win32com.client

 

 

2. 엑셀 Application 열기

 

 

<코드>

excel = win32com.client.Dispatch("Excel.Application") #엑셀 프로그램 실행
excel.Visible = True #앞으로 실행과정을 보이게

 

  win32com.client.Dispatch( )는 프로그램을 실행시키는 명령어이다. 괄호안에 "Excel.Application"을 입력하여 코드를 실행하면 엑셀이 실행되게 된다. excel.Visible을 True로 설정할 경우 excel이라는 Com객체 실행과정이 보이게 설정되게 된다. (False일 경우 실행되는 과정이 보이지 않음)

 

  위 코드를 실행하면 아래처럼 빈 엑셀창이 뜨게 된다.

 

 

 

 

3. Workbook 및 Worksheet 객체 설정

 

 

1) 새로운 파일 생성

 

 

<코드>

wb = excel.Workbooks.Add()
ws = wb.Worksheets("sheet1")

 

  새로운 엑셀파일을 생성해보자. OpenPyxl도 그렇지만 엑셀을 파이썬을 통해 제어해야할 경우 Workbook과 Worksheet 객체를 각각 생성해야 한다. wb와 ws가 바로 그 부분이다. wb는 Workbook을 새로 추가하는 코드이고, ws는 Workbook의 시트 중 "sheet1"이라는 시트를 객체로 생성한다.

 

  위 코드를 실행하면 아래와 같이 엑셀 Workbook이 생성된다.

 

 

 

2) 원래 있던 파일로 접근하기

 

 

  새로운 엑셀파일이 아닌 원래 있는 액셀파일에 접근해야 하 경우 Workbook.open 함수를 사용한다. 아래처럼 절대경로 나 상대경로로 엑셀파일 경로를 지정해주면 된다.

 

<코드>

wb = excel.Workbooks.Open(r"C:\Users\Desktop\VS CODE\Project\17. win32com\data.xlsx")

 

 

4. Cell에 데이터 써보기

 

 

1) 기본

 

아래와 같은 방식으로 지정한 Worksheet에 데이터를 입력할 수 있다.

 

 

<코드>

#셀 row, col 값 지정하여 값넣기
ws.cells(1,1).Value = "win32com excel test1"

#ragne로 값 넣기1
ws.Range("A2").Value = "win32com excel test2"

#range로 범위 지정해서 값 넣기
ws.Range("A3:C3").Value = "win32com excel test3"

 

<결과>

 

 

2) Autofill

 

  OpenPyxl은 엑셀의 '자동채우기'기능을 제공하지 않는다. win32com.client을 사용하면 엑셀의 자동채우기 기능도 Autofill이라는 메서드를 통해 사용 가능하다.

 

  아래 코드는 A1:A3 내용을 ~A10까지 자동채우기하는 코드이다.

 

<코드>

ws.Range('A1:A3').AutoFill(ws.Range("A1:A10"))

 

<결과>

 

 

5. 파일 저장하기

 

 

1) 저장

 

  아래와 같이 저장하면 엑셀 기본 저장경로에 저장된다. 파일명은 '통합문서'이며, 나같은 경우는 내 PC-문서 폴더에 저장되는 것으로 확인

 

 

<코드>

wb.Save()

 

 

2) 다른 파일명 및 경로로 저장

 

 

다른 경로 및 파일명으로 저장시 SaveAs 사용한다. 

 

 

<코드>

wb.SaveAs(r"C:\Users\Desktop\VS CODE\Project\17. win32com\data.xlsx")

 

 

6. 종료

 

엑셀 Application을 종료시킨다. 이 전에 실행시켰던 프로그램과 충돌되지 않으려면 반드시 초기에 선언했던 excel COM 객체를 Quit를 통해 닫는다.

 

<코드>

excel.Quit()

 

728x90