파이썬에서 openpyxl로 엑셀 파일을 만들 때, 폰트 크기, 굵기, 폰트 색상 등 폰트를 활용한 스타일 설정이 필요할 때 있죠? 이번엔 Python openpyxl 폰트 스타일 설정 방법을 알아보도록 하겠습니다.
목차
Python openpyxl 폰트 스타일 설정
폰트 설정은 구체적으로 글꼴 이름과 크기, 굵기, 이탤릭, 세로정렬, 밑줄, 취소선, 색상을 아래와 같이 설정할 수 있습니다. 당연히 중복해서 설정이 가능합니다.
from openpyxl.styles import Font
font = Font(name='Verdana',
size=15,
bold=True,
italic=True,
vertAlign=None,
underline='none',
strike=False,
color='FF000000')
Python위의 코드 예시와 같이 사용할 수도 있으며, 아래 표 1의 대체 파라미터로도 대신 사용할 수 있습니다. sz, b, i, u 정도는 더 짧고 간단하게 이용할 수 있습니다.
폰트 속성 | 파라미터 | 대체 파라미터 | 값 종류 | 기본값 |
---|---|---|---|---|
폰트 이름 | name | 없음 | 문자열(예, D2Coding) | ‘Calibri’ |
폰트 크기 | size | sz | 정수, 실수(예, 13.2) | 11 |
굵게 | bold | b | Bool(True or False) | False |
이탤릭처리 | italic | i | Bool(True or False) | False |
취소선 | strike | strikethrough | Bool(True or False) | False |
밑줄 | underline | u | 문자열(none, single, double) | ‘none’ |
외곽선 | outline | 없음 | Bool(True or False) | False |
위첨자/아래첨자 | vertAlign | 없음 | 문자열(superscript, subscript, baseline) | None |
색상 | color | 없음 | 문자열 또는 Color 인스턴스 | ‘FF000000’ |
폰트 스타일 적용 방법
다음과 같이 생성한 폰트 인스턴스 객체를 셀 객체의 font 값으로 지정해 주면 폰트 설정이 끝납니다.
ws['C3'].font = font
Python이제는 위에서 살펴본 각 속성 별로 가질 수 있는 값에 대해 상세히 살펴보겠습니다.
폰트 이름(name)
name에는 사용할 폰트의 이름을 적어주시면 됩니다. “D2Coding”이라는 폰트를 사용한다면 다음과 같이 name에 D2Coding을 적어주시면 됩니다. 폰트 이름을 지정하지 않으면 기본값으로 ‘Calibri’가 적용됩니다.
아래 그림 1에서 A1에는 D2Coding을 적용해 보고, A2에는 Verdana를 적용해 보았습니다.
사용한 코드는 다음과 같습니다.
from openpyxl.styles import Font
from openpyxl.workbook import Workbook
ft1 = Font(name='D2Coding')
ft2 = Font(name='Verdana')
wb = Workbook()
ws = wb.active
ws['A1'].value = 'Report Name'
ws['A2'].value = 'Report Name'
ws['A1'].font = ft1
ws['A2'].font = ft2
wb.save('example.xlsx')
Python글자 크기(size or sz)
글자 크기는 size 또는 sz 파라미터를 사용하면 됩니다. 사용할 수 있는 값은 정수값이나 실수값을 사용하면 됩니다. 사용하는 값은 pt(포인트) 단위로 적용됩니다. 크기를 지정하지 않으면 기본값으로 11포인트가 적용됩니다.
그림 2는 A1에는 D2Coding 글꼴로 15포인트를 적용시켰고, A2에는 15.5포인트를 적용했습니다.
사용한 코드는 아래와 같습니다. 글자 크기만을 비교하기 위해 A1과 A2에 동일한 글꼴 D2Coding을 적용했습니다. size와 sz 파라미터를 각각 사용해 보았습니다. 아래 코드부터는 폰트 이름에서 사용한 코드와 중복되는 코드는 제외하겠습니다.
ft1 = Font(name='D2Coding', size=15)
ft2 = Font(name='D2Coding', sz=15.5)
Python굵은 글자(bold or b)
폰트를 굵게 표시하려면 bold 또는 b 값으로 True 처리해 주면 되며, 그렇지 않다면 False로 지정해 주면 됩니다. 기본값은 False입니다.
폰트 굵기를 적용한 결과는 아래와 같습니다.
폰트 크기는 모두 15pt로 유지하고, A2에만 폰트 굵기를 True로 설정해 주었습니다.
ft1 = Font(name='D2Coding', sz=15)
ft2 = Font(name='D2Coding', sz=15, b=True)
Python기울임(italic or i)
폰트를 기울임 처리하려면 italic 또는 i 값을 True 처리해 주면 되며, False로 지정하면 글자를 기울이지 않습니다. 기본값은 False입니다.
폰트 기울임을 적용한 결과는 아래 그림과 같습니다.
폰트 크기는 15pt로 유지하고, A2에만 기울임 처리를 적용했습니다.
ft1 = Font(name='D2Coding', sz=15)
ft2 = Font(name='D2Coding', sz=15, i=True)
Python밑줄 표시(underline or u)
underline(밑줄)은 2가지 종류의 값을 갖습니다. 밑줄로 한 줄을 사용하면 ‘single’값을 사용하며, 두 줄을 사용하면 ‘double’값을 사용하면 됩니다. 만약 밑줄을 사용하지 않으려면 ‘none’ 값을 사용하면 됩니다. 기본값은 ‘none’입니다.
밑줄 표시에 대한 예시는 다음 그림과 같습니다.
아래의 코드를 사용했습니다.
ft1 = Font(name='D2Coding', sz=15, underline='none')
ft2 = Font(name='D2Coding', sz=15, u='single')
ft3 = Font(name='D2Coding', sz=15, u='double')
Python취소선(strike or strikethrough)
취소선을 적용하면 글자의 가운데에 가로줄 처리가 됩니다. 다음과 같이 strike 또는 strikethrough 파라미터를 사용하며, True와 False 값을 갖습니다. 기본값은 False입니다.
strike 속성을 적용한 결과는 아래와 같습니다.
사용한 코드는 아래와 같습니다.
ft1 = Font(name='D2Coding', sz=15)
ft2 = Font(name='D2Coding', sz=15, strike=True)
Python외곽선(outline)
외곽선을 적용하면 글자의 외곽선만 표시되고, 속은 비어있는 형태를 띱니다. outline에 True나 False 값을 적용해서 사용할 수 있습니다.
아래 그림은 A2에 외곽선을 지정한 사용 예시입니다.
사용한 코드는 아래와 같습니다.
ft1 = Font(name='D2Coding', sz=15)
ft2 = Font(name='D2Coding', sz=15, outline=True)
Python첨자(vertAlign)
위첨자(superscript)나 아래첨자(subscript)를 사용하거나, 사용하지 않을 수 있습니다. 사용하지 않을 때에는 None 객체를 할당해 주거나, ‘baseline’값을 주면 됩니다.
위첨자, 기본, 아래첨자를 각각 A2~A4까지 적용해 보았습니다.
사용한 코드는 아래와 같습니다.
ft1 = Font(name='D2Coding', sz=15)
ft2 = Font(name='D2Coding', sz=15, vertAlign='superscript')
ft3 = Font(name='D2Coding', sz=15, vertAlign='baseline')
ft4 = Font(name='D2Coding', sz=15, vertAlign='subscript')
Python폰트 복사
위의 예제들을 보면서 뭔가 많이 중복된다고 느끼지 않으셨나요? 맞습니다. 계속 폰트 이름은 D2Coding에 사이즈는 15포인트로 중복입니다. 따라서 아래와 같이 폰트 인스턴스 객체 ft1을 ft2로 복사한 다음 bold 값만 True로 설정해 주면 모든 설정은 동일하게 하고 bold 값만 설정할 수 있습니다.
from copy import copy
ft1 = Font(name='D2Coding', sz=15)
ft2 = copy(ft1)
ft2.b = True
Python폰트 색상(color)
글자의 색상을 지정할 때에는 color 파라미터를 사용하면 됩니다. aRGB 또는 RGB 형태의 문자열 값을 가질 수 있으며, Color 인스턴스 객체도 값으로 가질 수 있습니다. 기본값은 aRGB 형태의 ‘FF000000’입니다. 불투명한 검은색 글자입니다.
색상은 라인 3과 같이 RGB 형태로 입력하면 ‘FFFF0000’으로 aRGB 값으로 처리됩니다. 어쨌든 빨강색으로 표시됩니다. 라인 5와 7에서는 각각 레거시 테마와 색조, 그리고 인덱스를 사용하는 방법을 적용해 보았습니다. 인덱스 값에 대해서는 Working with styles 문서를 참고하시기 바랍니다. 단, 인덱스 색상 표기법에 대해서는 나와있지만, 테마와 색조를 사용하는 방법에 대해 상세히 나와 있지는 않습니다.
ft1 = Font(name='D2Coding', sz=15)
ft2 = copy(ft1)
ft2.color = 'FF0000'
ft3 = copy(ft1)
ft3.color = Color(theme=6, tint=0.5)
ft4 = copy(ft1)
ft4.color = Color(indexed=33)
Python정리
여기까지 Python openpyxl 글꼴 스타일 설정 방법을 알아보았습니다. 필요하셨던 분들께 도움이 되길 바랍니다.
관련 자료
Python openpyxl 스타일 공식 문서 Working with styles를 참고했습니다.