본문 바로가기

코딩/업무자동화

[파이썬/업무자동화] openpyxl.style 사용법 정리

반응형

※ OpenPyxl 관련 포스팅 모음

2021.03.19 - [코딩/업무자동화] - [파이썬/업무자동화] Openpyxl로 엑셀 함수 사용하기, 엑셀 수식 넣기

2021.08.21 - [코딩/업무자동화] - [파이썬/업무자동화] Openpyxl 통해 엑셀 함수 사용하기 2편

2021.08.30 - [코딩/업무자동화] - [파이썬/업무자동화] 엑셀에 입력 된 파일명 따라 이미지 삽입하기 - openpyxl

2021.10.04 - [코딩/업무자동화] - [파이썬/업무자동화] openpyxl.style 사용법 정리

2021.10.16 - [코딩/업무자동화] - [파이썬/업무자동화] openypyxl 통해 엑셀 조건부 서식 적용하기

2021.11.09 - [코딩/업무자동화] - [파이썬/업무자동화] openpyxl 시트 조작 방법 4가지


  파이썬의 openpyxl.style 에서는 아래와 같은 셀서식 제어 기능들을 제공함. 대표적인 모듈 중 자주 쓰일 것 같은 6개 모듈에 대해 정리하고자 한다.

 

 

1. Font

 

<코드>

import openpyxl as op
from openpyxl.styles.fonts import Font

wb = op.Workbook()
ws = wb.active

#font test1
ws["A1"].value = "Font test1"
ws["A1"].font = Font(size=20, italic = True, bold = True)

#font test2
ws["A2"].value = "Font Test2"
font_format =  Font(size=12, name='굴림', color = 'FF000000')
ws["A2"].font = font_format

wb.save("style_result.xlsx")

 

<결과>

 

 

openpyxl 공식 홈페이지에서 제공하는 font 파라미터들. 참고로 strike는 취소선, underline은 밑줄이다.

openpyxl 공식 홈페이지 제공

 

 

 

 

 

2. Border, Side(외곽 테두리)

 

-. Border와 Side는 테두리를 설정할 수 있는 모듈이다.

-. 테두리(왼쪽,오른쪽,상단,하단) 각각 선 타입, 색상 등 설정

 

-. border style 종류

dashDot, dashDotDot, dashed, dotted, double, hair, medium, mediumDashDot, mediumDashDotDot, mediumDashed, slantDashDot, thick, thin

 

<코드>

import openpyxl as op
from openpyxl.styles import Border, Side
from openpyxl.styles.colors import Color

wb = op.Workbook()
ws = wb.active

ws["B2"].value = "Border test1"
ws["D2"].value = "Border test2"

#border test1
ws["B2"].border = Border(bottom = Side(border_style="thin"))

#border test2
border_format1 = Side(border_style="thin", color="000000")
border_format2 = Side(border_style="double")

ws["D2"].border = Border(top = border_format2, left=border_format1, right=border_format1, bottom= border_format2)

#객체 저장 및 닫기
wb.save("style_result.xlsx")
wb.close

 

<결과>

 

아래는 border 메서드에 들어갈 수 있는 파라미터들이다. 대표적으로 left, right, top, bottom을 많이 쓴다.

 

openpyxl 공식 홈페이지 제공

 

 

3. Alignment

 

-. Alignment 클래스의 입력 파라미터는 horizontal(수평), vertical(수직)이며 각각 어떤 방향으로 정렬할 것인지 나타냄

-. horizontal : 'center', 'left', 'right'

-. vertical : 'top', 'bottom', 'center'

 

<코드>

import openpyxl as op
from openpyxl.styles import Alignment


wb = op.Workbook()
ws = wb.active

ws["C2"].value = "Alignment test1"
ws["C4"].value = "Alignment test2"

#test위한 행 높이, 열 너비 지정
ws.row_dimensions[2].height = 50
ws.row_dimensions[4].height = 50
ws.column_dimensions['C'].width = 50


#Alignment test1
ws["C2"].alignment = Alignment(horizontal = 'left', vertical='center')

#Alignment test2
format1 = Alignment(horizontal = 'center', vertical='center')
ws["C4"].alignment = format1

#Save
wb.save("result.xlsx")
wb.close

 

<결과>

 

 

4) Patternfill

 

-. 셀 색상을 채우는 모듈

-. 색상표는 아래 openpyxl 공식 홈페이지의 표를 참고

https://openpyxl.readthedocs.io/en/stable/styles.html

 

Working with styles — openpyxl 3.0.9 documentation

Colours Colours for fonts, backgrounds, borders, etc. can be set in three ways: indexed, aRGB or theme. Indexed colours are the legacy implementation and the colours themselves depend upon the index provided with the workbook or with the application defaul

openpyxl.readthedocs.io

 

<코드>

import openpyxl as op
from openpyxl.styles import PatternFill

wb = op.Workbook()
ws = wb.active

#PatternFill test1 : green
green = PatternFill(start_color = '00ff00', end_color = '00ff00', patternType='solid')
ws["C3"].fill=green

#PatternFill test2 : Black
ws["C5"].fill = PatternFill(fill_type='solid', start_color='00000000', end_color='00000000')

wb.save("result.xlsx")
wb.close

 

<결과>

 

-. 아래는 PatternFill defatult 설정

 

 

5) Protection

 

-. 특정 셀의 숨김/잠금 속성을 설정해주는 클래스이다.

 

<코드>

import openpyxl as op
from openpyxl.styles import Protection

wb = op.Workbook()
ws = wb.active

ws["C3"].value = "Protection test1 : locked"
ws["C5"].value = "Protection test2 : hidden"

#Protection test
ws["C3"].protection = Protection(locked = True, hidden = True)
ws["C5"].protection = Protection(locked = False, hidden = False)

wb.save("result.xlsx")
wb.close

 

<결과>

 

-. 실제 엑셀 내용상에서는 수정되는 부분은 없지만 아래 셀서식-보호의 설정값이 변경 된다.

-. 설명에서도 나와있지만 셀 잠금/수식 숨기기를 적용하려면 워크시트를 보호하도록 변경하면 된다.

(시트 보호 설정도 openpyxl 로 가능하다.)

 

1) C3

2) C5

 

다음 포스팅에서는 엑셀의 조건부 서식을 openpyxl을 통해 사용하는 방법을 정리해볼 예정이다.

728x90