본문 바로가기

코딩/업무자동화

[파이썬/업무자동화] 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 엑셀 파일 저장 및 옵션


 

먼저 Workbook 및 WorkSheet를 새로 성생해서 임의의 텍스트를 엑셀 시트에 입력해보았다.

 

 

1. Worokbook 및 WorkSheet 생성

 

import win32com.client

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

wb = excel.Workbooks.Add() #엑셀 Workbook 파일 1개 새로 생성
ws = wb.Worksheets.Add() #엑셀 시트를 새로 생성

 

다른 포스팅에서 설명했던 부분으로 내용 생략

 

2.  다중 범위 지정하여 시트에 데이터 쓰기

 

#다중범위 써보기1
ws.Range(ws.cells(1,1), ws.cells(1,3)).value = "win32com excel 서식(font style)"

#다중범위 써보기2
ws.Range("A2:B2").value = "win32com excel 서식(font 색상)"

#다중범위 써보기3
ws.Range("A3").value = "win32com excel 서식(Cell 색상)"

 

첫번째 '다중범위 써보기1'의 경우 아래 코드와 동일하다. "A1:A3"를 cells 속성을 활용하여 표현한 방법이다.

 

#다중범위 써보기1
ws.Range("A1:A3").value = "win32com excel 서식(font style)"

 

<결과>

 

 

3. 셀서식1 - Font style(글씨체, 크기, 굵게, 기울기 등)

 

#셀서식1. font size 및 font 굵게, 글씨체

#"A1" 글씨체 변경
ws.cells(1,1).Font.name = "굴림"
#"B2"글씨 사이즈 변경
ws.cells(1,2).Font.Size = 14 
#"C3"글씨 스타일 변경(Bold, Italic, Underline)
ws.cells(1,3).Font.Bold = True #굵게
ws.cells(1,3).Font.italic = True #글씨 기울기
ws.cells(1,3).Font.Underline = True #밑줄

 

<결과>

 

 

4. 셀서식2 - Font 색상 지정

 

#셀서식2. font 색상 지정
ws.Range("A2").font.ColorIndex = 40
ws.Range("B2").font.ColorIndex = 50

 

<결과>

 

  참고로, win32com 에서는 ColorIndex라는 색상 번호를 제공한다. 컬러인덱스는 1~56 으로 설정할 수 있으며 번호별 이미지는 아래를 참고하자.(저작권 문제로 본 글에 이미지는 넣지 않음)

 

 아래 글에서 보듯이 엑셀 VBA에서 제공하는 컬러인덱스를 그대로 따라간다.(같은 Microsoft에서 제공하는 언어라서 그런 것 같다.)

https://mainia.tistory.com/3103

 

엑셀 VBA 셀 색상 변경하는 두 가지 방법

엑셀 VBA 셀 색상 변경하는 두 가지 방법 환경: Microsoft Excel 2013 VBA 에서 셀의 배경색을 변경하는 방법은 2가지 있습니다. ColorIndex 와 Color 속성을 이용하는 것입니다. 세팅하는 값의 종류는 틀립니

mainia.tistory.com

 

 

5. 셀서식3 - Cell 색상, Cell 테두리, Cell 정렬

 

 

1) Cell 색상 지정

 

#셀서식3-1). 셀 색상 지정
ws.Range("A3").Interior.ColorIndex = 30

 

<결과>

 

 

2) Cell 테두리 

 

#셀서식 3-2) 셀 외곽 테두리 지정
#Weight : 선 굵기, LineStyle의 경우 1:실선, 2:짧은점선, 3:긴점선 

ws.Range("A1:C3").BorderAround(ColorIndex = 1,Weight = 2,LineStyle = 1)

 

<결과>

 

셀 외곽이 아닌 안쪽까지 모두 테두리를 지정하고 싶다면 아래 코드를 사용한다.

 

#셀 서식 3-2) 셀 안쪽까지 모두 테두리 지정

rng = ws.Range("A1:C3") #범위 설정
rng.Borders.LineStyle = 1 #선 스타일
rng.Borders.ColorIndex = 14 #선 색상
rng.Borders.Weight = 2 #선 굵기

 

<결과>

 

 

6. 셀서식 초기화하기

 

  셀서식을 초기화하는 방법은 ClearFormat이라는 함수를 사용한다. ClearFormat은 내용은 보존한채 서식만 초기화한다. 다. 해당 함수는 엑셀 VBA에서도 동일하게 사용할 수 있다.

 

#셀서식4. 셀서식 초기화(ClearContents일 겨우 내용만 삭제, Clear는 내용,서식 모두 초기화)
ws.Range("A1:C3").ClearFormats()

 

주석에도 표시하였지만 ClearContents( )일 경우 내용만 삭제(서식 보존), Clear( ) 일 경우 내용 및 서식 모두 삭제한다.

 

 

<결과>

 

 

 

다음 포스팅에서는 셀 정렬, 행열 크기 조정, 범위 선택 방법 등의 내용을 다뤄 볼 예정이다.

 

 

 

 

 

728x90