안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.
오늘은 파이썬으로 엑셀(Excel)을 다룰 때 가장 많이 사용하는 openpyxl 패키지에 대해 알아보겠습니다.
엑셀은 회사에서 업무할 때 정말 많이 사용하는 오피스 프로그램이니 알아두시면 많은 도움이 되실거라 생각합니다!
지난 시간에 배운 내용과 관련된 코드는 설명없이 넘어 갈 예정이니, 아래 내용을 모르신다면 읽고 오시는 것을 추천드립니다.
2021.05.28 - [파이썬 패키지/사무자동화] - [Python Excel] 파이썬으로 엑셀 다루기 1편_openpyxl 패키지 소개 및 시트 생성/변경
2021.05.29 - [파이썬 패키지/사무자동화] - [Python Excel] 파이썬으로 엑셀 다루기 2편_엑셀 파일 불러오기, 셀 데이터 입력/삭제 및 빈칸 추가
2021.05.30 - [파이썬 패키지/사무자동화] - [Python Excel] 파이썬으로 엑셀 다루기 3편_셀 데이터 가져오기
이번 시간에는 셀에 여러가지 스타일을 적용하는 방법을 배워보겠습니다.
셀 스타일 설정을 위해서는 openpyxl.styles 모듈을 불러와줘야합니다.
from openpyxl import Workbook
from openpyxl.styles import Font, Border, Side, Alignment, PatternFill, Protection
설정 요소는 크게 5종류로 나뉩니다. Font(글꼴), Border(테두리), Alignment(맞춤), PatternFill(채우기), Protection(보호)
하나씩 차례대로 알아보겠습니다.
1. Font (글꼴)
우리가 엑셀을 사용할 때 가장 흔하게 설정하는 글꼴입니다. 글자체, 사이즈, 글자 스타일, 밑줄, 색상 등을 설정할 수 있습니다.
세부 설정 요소 | 설정 값 | 기본 값 |
name | '폰트 이름' ex) 'Arial', '굴림', '맑은 고딕' |
'Calibri' |
size | 1~409 | 11 |
bold / italic / strike (굵게) (기울임) (취소선) |
True/False | Fasle |
underline (밑줄) |
'none'/'single'/'double' (없음) (한 줄) (두 줄) |
'none' |
color | '000000~FFFFFF' or '00000000~FFFFFFFF' | 'FF000000' |
혹시 아래에서 마음에 드는 컬러가 있으시면 참고해서 사용하세요.
<사용 예>
a1 = ws.cell(row=1, column=1, value="파이썬은")
b1 = ws.cell(row=1, column=2, value="역시")
c1 = ws.cell(row=1, column=3, value="코딩유치원!")
a1.font = Font(color="FF0000", italic=True, bold=True) # 글자 색은 빨갛게, 이탤릭, 굴게 적용
b1.font = Font(color="0000FF", name="Arial", strike=True) # 폰트를 Arial로 설정, 취소선 적용
c1.font = Font(color="00FF00", size=15, underline="single") # 글자 크기를 15로 설정, 밑줄 적용
2. Border (테두리)
테두리의 위치(상하좌우)와 선 스타일을 설정할 수 있습니다. 자주 사용하는 것만 굵은 글씨로 표시해두었으니 참고해주세요.
세부 설정 요소 | 설정 값 | 기본 값 |
left / right / top / bottom vertical / horizontal (좌우 모서리) (상하 모서리) outline (네 모서리 모두) |
'dashDot' / 'dashDotDot' / 'dashed' / 'dotted' / 'double' / 'hair' / 'medium' / 'mediumDashDot' / 'mediumDashDotDot' / 'mediumDashed' / 'slantDashDot' / 'thick' / 'thin' |
None |
diagonal (대각선) | 위와 동일 | None |
diagonal_direction (대각선 방향) |
0 / 1 | 0 |
<사용 예>
a1 = ws.cell(row=1, column=1, value="코딩유치원")
thin_border = Border(left=Side(style="thin"), right=Side(style="thin"),
top=Side(style="thin"), bottom=Side(style="thin"))
a1.border = thin_border
3. Alignment (맞춤)
아마 맞춤 기능은 가운데 정렬할 때 가장 많이 사용하지 않나 싶습니다. 그 외에도 많은 기능이 있지만 아직 필요성을 못느껴서 추후 필요시 공부하여 업데이트 예정입니다.
세부 설정 요소 | 설정 값 | 기본 값 |
horizontal (수평 정렬) | "general" / "left" / "center" / "right" / "fill" / "justify" / "centerContinuous" / "distributed" |
None |
vertical (수직 정렬) | "top" / "center" / "bottom" / "justify" / "distributed" |
None |
indent, relativeIndent | 0 이상의 정수 | 0 |
<그 외 요소들> 1) 텍스트 회전 textRotation / text_rotation 2) 자동 줄바꿈 wrapText / wrap_text 3) 줄여 맞추기 shrinkToFit / shrink_to_fit 4) 기타 등등 readingOrder / justifyLastLine / mergeCell |
추후 필요시 공부하여 업데이트 예정 | 1) 0 / None 2) None / None 3) None / None 4) 0 / None / None |
<사용 예>
cell.alignment = Alignment(horizontal="center", vertical="center")
4. PatternFill (채우기)
채우기는 표의 제목이나 특별히 강조할 곳을 표시할 때 사용합니다. 아마 Solid 패턴으로 배경색만 설정해서 사용하지 않을까 생각됩니다.
세부 설정 요소 | 설정 값 | 기본 값 |
patternType | PatternFill( ) / GradientFill( ) | 사용 예 참고 |
fill_type | 'solid' / 'darkDown' / 'darkGray'/ 'darkGrid' / 'darkHorizontal' / 'darkTrellis' / 'darkUp' / 'darkVertical' / 'gray0625' / 'gray125' / 'lightDown' / 'lightGray' / 'lightGrid' / 'lightHorizontal' / 'lightTrellis' / 'lightUp' / 'lightVertical' / 'mediumGray' |
None |
fgColor (배경색) | '000000~FFFFFF' or '00000000~FFFFFFFF' | 000000(검정색) |
bgColor (패턴색) | '000000~FFFFFF' or '00000000~FFFFFFFF' | 000000(검정색) |
start_color / end_color (그라데이션) |
'000000~FFFFFF' or '00000000~FFFFFFFF' | None |
<사용 예>
# 배경을 빨간색으로 설정
cell.fill = PatternFill(fgColor="FF0000", fill_type="solid")
# 그라데이션 배경 넣는 법 (start_color, end_color)
cell.fill = GradientFill(stop=("000000", "FFFFFF"))
5. Protection (보호)
통합 문서나 시트를 수정하지 못하도록 보호하는 설정으로 보입니다만 제가 엑셀을 잘 몰라서 이런 것이 있다는 것 정도만 언급하고 넘어가도록 하겠습니다.
protection = Protection(locked=True, hidden=False)
오늘은 openpyxl을 이용하여 엑셀 서식(style)을 변경하는 법에 대해 알아보았습니다.
다음 시간에는 수식을 사용하는 법에 대해 공부해보겠습니다.
'파이썬 패키지 > 엑셀' 카테고리의 다른 글
[파이썬 엑셀] Openpyxl의 ws.rows와 ws.max_row의 빈칸 인식 문제 원인과 해결책 (1) | 2021.12.11 |
---|---|
[파이썬 엑셀] python으로 excel 다루기 5편_함수(수식) 적용, 수식 결과값을 가져오는 법(data_only = True) (1) | 2021.06.02 |
[파이썬 엑셀] python으로 excel 다루기 3편_셀 데이터 가져오기 (2) | 2021.05.30 |
[파이썬 엑셀] python으로 excel 다루기 2편_엑셀 파일 불러오기, 셀 데이터 입력/삭제 및 빈칸 추가 (0) | 2021.05.29 |
[파이썬 엑셀] python으로 excel 다루기 1편_openpyxl 패키지 소개 및 시트 생성/변경 (8) | 2021.05.28 |