엑셀을 자동화하는데 여러가지 라이브러리(xlsxwriter, pandas, xlwings. openpyxl 등)가 이미 존재하고 있지만, 기존 라이브러리로는 하기 힘든 작업이 있지 않으셨나요?
그 빈자리를 win32com을 통해 채워보도록 하겠습니다.
win32com은 각 개별 셀들을 커스터마이징하는데 있어 특화된 라이브러리인데요.
부족한 documentation과 레퍼런스로 많이 알려져 있진 않지만, 사용할줄만 안다면 여러분의 확실한 무기가 되어줄 것입니다.
1) win32com 설치
win32com은 여러 언어에서 사용가능한데요. 그 중 파이썬용 win32com은 pypiwin32 입니다.
pip install 명령어를 통해 pypiwin32 를 설치 해줍니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 1) win32com 설치 [파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 1) win32com 설치](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 1) win32com 설치 [파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 1) win32com 설치](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
2) 엑셀 파일 초기 세팅
(1) 모듈 import
필요한 모듈을 import 해줍니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 2) 엑셀 파일 초기 세팅 win32com에서 필요한 모듈 임포트](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
(2) 엑셀 파일 연결 작업
Dispatch함수 안에 "Excel.Application"을 인자로 넣었는데요. 이는 엑셀파일을 동작시키는 객체를 생성시켜주기 위함입니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 2) 엑셀 파일 초기 세팅 Dispatch를 통해 엑셀 파일 동작](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
excel.Visible은 작업간에 엑셀창을 띄울지 말지 결정하는 속성값입니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 2) 엑셀 파일 초기 세팅 엑셀 파일 띄울지 말지 결정](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
(3) 엑셀 새 파일 생성
하나의 액셀파일을 담당할 workbook 객체를 생성합니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 2) 엑셀 파일 초기 세팅 엑셀 워크북 생성](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
이어서 file.xlsx라는 파일명으로 엑셀 파일을 생성해주는 작업인데요.
SaveAs는 다른이름으로 저장하기 기능정도로 이해하시면 됩니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 2) 엑셀 파일 초기 세팅 file.xlsx파일 생성](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
os.path.join(os.getcwd(), ~) 부분은 절대경로를 설정해주기 위해 한작업이며, 이 부분이 낯선분은 이 글을 참조해주시기 바랍니다.
(4) 기존 파일 열기/저장
지금까지는 새로 엑셀 파일을 생성한 후 파일명을 지정하는 방식이었다면, 기존에 생성되어 있는 파일을 여는 방식도 있습니다.
열고자하는 파일의 경로를 Workbooks.Open함수의 인자로 넣어주시면 됩니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 2) 엑셀 파일 초기 세팅 파일 열기](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
작업 후 파일을 저장할때는 .ActiveWorkbook.Save()를 이용합니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 2) 엑셀 파일 초기 세팅 파일작업후 저장](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
참고로 .Save()는 다른이름으로 저장이 아닌 저장(ctrl+s) 입니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 2) 엑셀 파일 초기 세팅 엑셀 저장화면](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
3) 사용할 sheet 설정
워크북 내에서도 어떤 sheet를 사용할지 결정해줘야 하는데요.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 3) 사용할 sheet 설정 어떤 sheet를 사용할지 결정](https://blog.kakaocdn.net/dn/bgsty0/btrOw7jv5QV/wMQXDddrmPA2DtHpbgFWVk/img.png)
workbook객체에 있는 Sheets함수 인자로 사용하고 싶은 sheet명을 넣어주면 됩니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 3) 사용할 sheet 설정 [파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 3) 사용할 sheet 설정](https://blog.kakaocdn.net/dn/RmUWG/btrOx9ucsuZ/XA1AdYP9YkHKPDobl22pzk/img.png)
원한다면 해당 sheet명을 변경해줄 수 도 있습니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 3) 사용할 sheet 설정 [파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 3) 사용할 sheet 설정](https://blog.kakaocdn.net/dn/dFwZdt/btrOxoedAK9/zejcVUhTDjAi5vXTLhZMK0/img.png)
4) 여러 커스터마이징
(1) column 크기변경
sheet에 접근한후에는 여러가지 커스터마이징이 가능합니다.
sheet객체에 있는 Range함수의 인자로 변경하고 싶은 Column의 범위를 지정해주고, ColumWidth 속성을 통해 원하는 열크기를 넣어주면 됩니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징 column크기 변경](https://blog.kakaocdn.net/dn/cmTvlL/btrOxmHvQMR/r7CV8qfKWhtQAxRf9sGYik/img.png)
output:
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징 [파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징](https://blog.kakaocdn.net/dn/bMR3bA/btrOqMmGXKV/NqU3upHfVnEnFpvSzEmxKK/img.png)
실제로 A:D 까지만 column의 폭이 30으로 변경 되었습니다.
참고로 변경 후에 save를 안해주면 변경사항이 취소되니 주의 하시기 바랍니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징 [파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징](https://blog.kakaocdn.net/dn/m2Cxt/btrOyi5EjRl/kH9Hz96i8aXGvfoMQIk6zK/img.png)
(2) 특정 셀에 값 넣기/볼드체
개별적인 셀을 수정하기 위해서는 sheet객체의 Cells 속성값을 통해 접근 해야 합니다.
그후 .Value속성값에 원하는 값을 할당해주시면 됩니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징 [파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징](https://blog.kakaocdn.net/dn/cQHZWc/btrOyBxbg2A/AsHzPaP1yVeYh6lXl7j5vk/img.png)
cells의 첫번째 인자는 행, 두번째 인자는 열의 위치를 의미합니다.
output:
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징 [파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징](https://blog.kakaocdn.net/dn/wEt0s/btrOwwYt4Pi/HtpqnicmJeSo7xZJZAGZck/img.png)
Bold체도 가능합니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징 [파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징](https://blog.kakaocdn.net/dn/bqlp2a/btrOzsGJjfb/66OXJJR1ekj0uhr6vXwQqk/img.png)
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징 [파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징](https://blog.kakaocdn.net/dn/cs9lAM/btrOxS0ti66/g2PZ2KICJMFbz41TfqZgqk/img.png)
만약 아래와 같이 바꾼다면
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징 [파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징](https://blog.kakaocdn.net/dn/QW8vx/btrOxLAlwMd/ddjsalUXDYNiRFKFqfafak/img.png)
A컬럼에 순차적으로 입력되는 형태가 되겠죠?
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징 [파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징](https://blog.kakaocdn.net/dn/xmW4t/btrOzeBLiV5/WPsJbkQdn98fAT9pzmWklK/img.png)
(3) 함수(function) 사용
함수를 사용하고 싶다면 아래와같은 식으로 적어주시면 됩니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징 [파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징](https://blog.kakaocdn.net/dn/O8n6N/btrOxlaO2N5/nLDyUKo2F2Jhh2aj3OpIt0/img.png)
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징 [파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징](https://blog.kakaocdn.net/dn/bVKJir/btrOyiEz0Xs/A1V8Dn630oKEtLdeAmp420/img.png)
(4) 차트넣기
차트를 사용하기 위한 최초 객체를 생성해줍니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징 차트 객체 생성](https://blog.kakaocdn.net/dn/RHcNn/btrOxok2ueh/XKbVrjOkm8Yq2a7jVVCge0/img.png)
그래프에서 사용할 소스 데이터의 위치를 넣어주는 부분입니다.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징 소스데이터 위치](https://blog.kakaocdn.net/dn/sdUqd/btrOxKVKbUN/6UUKna0DPBBqSMwSYxgUj0/img.png)
ws.Range("1:4")라고 적은 부분은 1행에서 4행까지의 데이터를 사용하겠다라는 뜻입니다.
PlotBy는 숫자에 따라 그래프의 형태가 조금씩 바뀌는데요. 하나씩 테스트해보면서 어떻게 바뀌는지 확인해보시는게 가장 이해하시기 빠를겁니다.
이어서 ChartType은 어떤 차트를 사용할지 결정하는 부분인데요.
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징 [파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징](https://blog.kakaocdn.net/dn/CGLrH/btrOwMmrZPf/Vkq3i5Y8PR9QpEp0e8k5r0/img.png)
워낙 다양한 차트타입이 있기 때문에, 해당 페이지에 가셔서 차트 타입을 확인 후 숫자를 기입해주시면 됩니다.
output:
![[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징 [파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?) - undefined - 4) 여러 커스터마이징](https://blog.kakaocdn.net/dn/ITVDu/btrOwMUi9Y6/mn5ZV2yUHheXZvc7VSkWg1/img.png)
'파이썬 > 파이썬 기초' 카테고리의 다른 글
[python] 파이썬 for else 구문 완벽 정리 (0) | 2023.01.02 |
---|---|
코랩(colab) 깃허브 업로드 방법(잘 안되는분) (0) | 2022.10.27 |
[파이썬 기초] windows 파이썬 가상환경 설정 방법 배우기 (0) | 2022.10.06 |
[python] math.hypot() 란? | 사용법 (0) | 2022.08.26 |
[파이썬 기초] Visual Studio Code(비주얼 스튜디오) 설치 (0) | 2022.03.28 |
댓글