파이썬 win32com으로 엑셀 여는 법, 음영 넣는 법, 닫는 법
본문 바로가기
파이썬(Python)/파이썬으로 엑셀 제어하기

파이썬 win32com으로 엑셀 여는 법, 음영 넣는 법, 닫는 법

by Squat Lee 2024. 1. 11.

openpyxl이 아닌 win32com으로 엑셀을 열어 보도록 하겠습니다.


 

1
2
3
import win32com.client
xl = win32com.client.Dispatch("Excel.Application")
xl.Visible = True
cs

 

 
win32com 모듈에서 client 파일을 불러옵니다.
 
여기서 Dispatch()는 괄호안에 어플리케이션을 xl이라는 변수로 바인딩할 수 있게 도와줍니다.
 
즉, 엑셀을 사용할래. 근데 이름이 기니깐 'xl'로 할래. 이렇게 이해하시면 됩니다.
 
xl.Visible을 True로 한 이유는 엑셀 창을 보면서 코딩을 하기 위함입니다.
 
저렇게 Visible을 True로 하더라도 엑셀을 생성하거나 열지 않으면 엑셀창이 안 열리더라구요. 그것도 모르고 바보처럼 삽질했습니다.
 
win32com이 openpyxl과 다른점은 엑셀을 열어 놓고 코딩을 할 수 있다는 점입니다. 
 

1
2
3
file = 'C:\\Users\\fibt5\\Desktop\\test.xlsx'
wb = xl.Workbooks.Open(file)
ws = wb.ActiveSheet
cs

 

원래 파이썬에서는 .py 파일과 같은 폴더에 있으면 엑셀파일이 열리는데 win32com은 안 되더라구요.

 

그래서 절대경로 다 적어주고, Open 함수로 파일 열어서 wb라는 변수로 바인딩했습니다.

 

현재 활성화 된 Sheet를 ws라는 변수로 바인딩 했습니다.

 

 
잘 열리네요.
 
이제는 A1 셀에다 "열렸다"라고 입력한 다음 셀에 음영색을 넣어 보겠습니다.

1
2
ws.cells(1,1).value = '열었다.'
ws.cells(1,1).Interior.ColorIndex = 6
cs

 
파이썬 코드가 마치 VBA  같다는 생각이 듭니다.
 
저는 원래부터 VBA를 할 줄 아니깐 openpyxl 보다 win32com을 더 쉽게 사용할 수도 있겠네요. ㅎㅎㅎ
 
컬러는 아래 표를 참고하시기 바랍니다.
 

Color Index

 

 
실행이 잘 되네요.
 
이제 마지막으로 엑셀창을 닫는 코드를 만들어 보겠습니다.
 

1
2
3
wb.Save()
wb.Close()
xl.Quit()
cs

 
여기서 좀 헤맸습니다.
 
왜냐하면 닫는 방법이 구글링해도 잘 못찾겠더라구요.
 
우선 순서는 "Workbook 저장 => Workbook 닫고 => 엑셀어플리케이션 나가기" 입니다.
 
이렇게 하면 아래와 같은 창이 뜨지 않고 저장되고, 파일이 닫힙니다.

 
아래는 전체 코드입니다.
 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import win32com.client
xl = win32com.client.Dispatch("Excel.Application")
xl.Visible = True
 
file = 'C:\\Users\\fibt5\\Desktop\\test.xlsx'
wb = xl.Workbooks.Open(file)
ws = wb.ActiveSheet
 
ws.cells(1,1).value = '열었다.'
ws.cells(1,1).Interior.ColorIndex = 6
 
wb.Save()
wb.Close()
xl.Quit()
cs

 

 
win32com 재미있네요.
 
이걸로 한글이나 워드, ppt도 제어 가능하다고 합니다. 하나씩 해보고 포스트 하도록 하겠습니다.
 
 

728x90
반응형

댓글