본문 바로가기
프로그래밍/Python

Python_openpyxl_엑셀_07_스타일_1

by Choraengyi 2021. 2. 9.

1. 폰트 설정

from openpyxl.styles import Font    # 폰트 설정 모듈 
from openpyxl import Workbook

wb = Workbook()
ws = wb.active

a1 = ws['A1']

ft = Font(color="FF0000")   # 폰트 변수 생성, 글자 색깔 빨간색응로

a1.font = ft    # A1 셀에 폰트 변수 적용
ws['B2'].font = ft  # # B2 셀에 폰트 변수 적용

wb.save('sample_style.xlsx')

- 결과

더보기

임의의 값 입력 시 글자색 적용되어 있음

 

폰트 변경 시

from openpyxl.styles import Font    # 폰트 설정 모듈 
from openpyxl import Workbook

wb = Workbook()
ws = wb.active

a1 = ws['A1']

ft = Font(color="FF0000")   # 폰트 변수 생성, 글자 색깔 빨간색응로

a1.font = ft    # A1 셀에 폰트 변수 적용
ws['B2'].font = ft  # # B2 셀에 폰트 변수 적용

#a1.font.bold = True # 오류 발생 Style objects are immutable and cannot be changed.Reassign the style with a copy

a1.font = Font(color="0000FF00", bold=True, size=20, name='Arial')  # Font 새로 할당, 색 변경, 진하게, 크기 20, 글씨체 변경

wb.save('sample_style.xlsx')

- 결과

더보기

임의의 값 입력 시 폰트 변경되어 적용됨

 

폰트 복사

from openpyxl.styles import Font    # 폰트 설정 모듈 
from openpyxl import Workbook
from copy import copy   # 복사 모듈

wb = Workbook()
ws = wb.active

a1 = ws['A1']

ft = Font(color="FF0000")   # 폰트 변수 생성, 글자 빨간색

a1.font = ft    # A1 셀에 폰트 변수 적용

ft2 = copy(ft)      # copy 를 통한 스타일 복사 가능
ft2.size = 30       # 복사한 스타일값에서 추가 수정 가능, 크기 30
ft2.color="00FF00FF"    # 복사한 스타일값에서 추가 수정 가능, 색 변경

ws['A2'].font = ft2	# A2 셀에 복사한 폰트 적용

wb.save('sample_style.xlsx')

- 결과

더보기

임의의 값 입력 시 폰트 변경되어 적용됨

 

2. 셀 색상 변경

## 컬러
from openpyxl.styles import Color, PatternFill  # 필요한 모듈

color_index = 0 # color 인덱스 지정을 위한 변수
for row_num in range(1,9):  # 8개 행 반복
    for col_num in range(1,9):  # 8개 열 반복
        color = Color(indexed=color_index)  # Color 인덱스에 인덱스 할당, 인덱스에 있는 색 지정됨
        paint_cell = PatternFill(patternType='solid', fgColor=color)    # 위에서 할당한 색을 셀 색으로 할당하기 위함
        select_cell = ws.cell(row=row_num, column=col_num)  # 셀 1개씩 순서대로 선택
        select_cell.fill = paint_cell   # 선택된 셀에 인덱스에 맞는 셀 색 변경
        color_index += 1    # 인덱스 값 증가

- 결과

 

인덱스된 색은 아래와 같이 사용 가능

출처 : openpyxl.readthedocs.io/en/stable/styles.html

#참고 : https://openpyxl.readthedocs.io/

 

728x90
반응형

댓글