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을 더 쉽게 사용할 수도 있겠네요. ㅎㅎㅎ
컬러는 아래 표를 참고하시기 바랍니다.
실행이 잘 되네요.
이제 마지막으로 엑셀창을 닫는 코드를 만들어 보겠습니다.
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도 제어 가능하다고 합니다. 하나씩 해보고 포스트 하도록 하겠습니다.
'파이썬(Python) > 파이썬으로 엑셀 제어하기' 카테고리의 다른 글
파이썬 win32com 으로 시트 이름 바꾸기 (0) | 2024.01.12 |
---|---|
Python - openpyxl 을 사용 중 값이 아닌 수식을 가져올때 해결방법 (2) | 2021.10.30 |
Python(파이썬) openpyxl - 엑셀 스타일 지우기(주의) (0) | 2021.05.06 |
Python(파이썬) openpyxl - 엑셀 글자정렬(Text Align) (0) | 2021.05.05 |
Python(파이썬) openpyxl - 글자(Font) 크기, 색깔, 스타일 지정하는 방 (0) | 2021.05.02 |
댓글