무효 클릭 IP 추적 중...
파이썬/파이썬 기초

[파이썬 기초] 엑셀 자동화 방법(아직 openpyxl 쓰시나요?)

꼬예 2022. 10. 14.

엑셀을 자동화하는데 여러가지 라이브러리(xlsxwriter, pandas, xlwings. openpyxl 등)가 이미 존재하고 있지만, 기존 라이브러리로는 하기 힘든 작업이 있지 않으셨나요?

 

그 빈자리를 win32com을 통해 채워보도록 하겠습니다.

win32com은 각 개별 셀들을 커스터마이징하는데 있어 특화된 라이브러리인데요.

 

부족한 documentation과 레퍼런스로 많이 알려져 있진 않지만, 사용할줄만 안다면 여러분의 확실한 무기가 되어줄 것입니다.

 

1) win32com 설치

win32com은 여러 언어에서 사용가능한데요. 그 중 파이썬용 win32com은 pypiwin32 입니다.

pip install 명령어를 통해 pypiwin32 를 설치 해줍니다.

 

 

2) 엑셀 파일 초기 세팅

(1) 모듈 import

필요한 모듈을 import 해줍니다.

 

win32com에서 필요한 모듈 임포트

 

(2) 엑셀 파일 연결 작업

Dispatch함수 안에 "Excel.Application"을 인자로 넣었는데요. 이는 엑셀파일을 동작시키는 객체를 생성시켜주기 위함입니다.

 

Dispatch를 통해 엑셀 파일 동작

 

excel.Visible은 작업간에 엑셀창을 띄울지 말지 결정하는 속성값입니다.

 

엑셀 파일 띄울지 말지 결정

 

(3) 엑셀 새 파일 생성

하나의 액셀파일을 담당할 workbook 객체를 생성합니다.

 

엑셀 워크북 생성

 

이어서 file.xlsx라는 파일명으로 엑셀 파일을 생성해주는 작업인데요.

SaveAs는 다른이름으로 저장하기 기능정도로 이해하시면 됩니다.

 

file.xlsx파일 생성

 

os.path.join(os.getcwd(), ~) 부분은 절대경로를 설정해주기 위해 한작업이며, 이 부분이 낯선분은 이 글을 참조해주시기 바랍니다.

 

(4) 기존 파일 열기/저장

지금까지는 새로 엑셀 파일을 생성한 후 파일명을 지정하는 방식이었다면, 기존에 생성되어 있는 파일을 여는 방식도 있습니다.

 

열고자하는 파일의 경로를 Workbooks.Open함수의 인자로 넣어주시면 됩니다.

 

파일 열기

 

작업 후 파일을 저장할때는 .ActiveWorkbook.Save()를 이용합니다.

 

파일작업후 저장

 

참고로 .Save()는 다른이름으로 저장이 아닌 저장(ctrl+s) 입니다.

 

엑셀 저장화면

 

3) 사용할 sheet 설정 

워크북 내에서도 어떤 sheet를 사용할지 결정해줘야 하는데요.

 

어떤 sheet를 사용할지 결정

 

workbook객체에 있는 Sheets함수 인자로 사용하고 싶은 sheet명을 넣어주면 됩니다.

 

 

원한다면 해당 sheet명을 변경해줄 수 도 있습니다.

 

 

4) 여러 커스터마이징

(1) column 크기변경

sheet에 접근한후에는 여러가지 커스터마이징이 가능합니다.

 

sheet객체에 있는 Range함수의 인자로 변경하고 싶은 Column의 범위를 지정해주고, ColumWidth 속성을 통해 원하는 열크기를 넣어주면 됩니다.

 

column크기 변경

 

output:

 

 

실제로 A:D 까지만 column의 폭이 30으로 변경 되었습니다.

 

참고로 변경 후에 save를 안해주면 변경사항이 취소되니 주의 하시기 바랍니다.

 

 

(2) 특정 셀에 값 넣기/볼드체

개별적인 셀을 수정하기 위해서는 sheet객체의 Cells 속성값을 통해 접근 해야 합니다.

그후 .Value속성값에 원하는 값을 할당해주시면 됩니다.

 

 

cells의 첫번째 인자는 행, 두번째 인자는 열의 위치를 의미합니다.

 

output:

 

 

Bold체도 가능합니다.

 

 

만약 아래와 같이 바꾼다면

 

 

A컬럼에 순차적으로 입력되는 형태가 되겠죠?

 

 

(3) 함수(function) 사용

함수를 사용하고 싶다면 아래와같은 식으로 적어주시면 됩니다.

 

 

(4) 차트넣기

차트를 사용하기 위한 최초 객체를 생성해줍니다.

 

차트 객체 생성

 

그래프에서 사용할 소스 데이터의 위치를 넣어주는 부분입니다.

 

소스데이터 위치

 

ws.Range("1:4")라고 적은 부분은 1행에서 4행까지의 데이터를 사용하겠다라는 뜻입니다.

PlotBy는 숫자에 따라 그래프의 형태가 조금씩 바뀌는데요. 하나씩 테스트해보면서 어떻게 바뀌는지 확인해보시는게 가장 이해하시기 빠를겁니다.

 

이어서 ChartType은 어떤 차트를 사용할지 결정하는 부분인데요.

 

워낙 다양한 차트타입이 있기 때문에, 해당 페이지에 가셔서 차트 타입을 확인 후 숫자를 기입해주시면 됩니다.

 

output:

 

 

  • 트위터 공유하기
  • 페이스북 공유하기
  • 카카오톡 공유하기
이 컨텐츠가 마음에 드셨다면 커피 한잔(후원) ☕

댓글