XlsxWriter 파이썬(Python) 모듈은 add_format 메서드를 이용하여 엑셀(Excel)의 구성요소인 셀(Cell) 안에 입력되는 텍스트 폰트, 숫자 형식, 셀 공식 숨기기, 정렬, 배경색 그리고 테두리와 같은 셀 포맷을 변경할 수 있다. 이번 포스팅에서는 add_format을 이용하여 셀 포맷을 설정하는 방법을 알아보자.
- 목차 -
1. 셀 폰트 설정
XlsxWriter에서 제공하는 셀 폰트 설정 기능은 다음과 같다.
이제 코드를 보면서 기능을 파악해보자. 셀 폰트는 셀 포맷의 일부이다. 이때 셀 포맷은 딕셔너리를 이용하는 방법과 set 메서드를 이용하는 방법이 있다. 셀 포맷은 기본적으로 add_format을 이용하여 정의한다.
아래 코드는 '나눔손글씨 붓' 폰트와 '나눔바른고딕'을 적용한 뒤 셀 값을 입력하고 저장한다. 주석을 참고하여 폰트 관련 어떤 부분을 설정할 수 있는지 확인할 수 있다. 여기서 다루지 않는 설정은 여기를 참고하기 바란다.
from xlsxwriter import Workbook
name = 'font_style'
wb = Workbook(f'{name}.xlsx')
ws = wb.add_worksheet(f'{name}')
## 딕셔너리로 셀 포맷 정의
cell_format_dict1 = {
'font_name':'나눔손글씨 붓', ## 폰트명
'font_size':20, ## 폰트 사이즈
'font_color':'red', ## 폰트 색상
'bold': True, ## 글자 굵게
'underline':True ## 밑줄
}
cell_format1 = wb.add_format(cell_format_dict1)
## set 메서드로 셀 포맷 정의
cell_format2 = wb.add_format()
cell_format2.set_font_name('나눔바른고딕')
cell_format2.set_font_strikeout(True)
ws.write(0, 0, '안녕하세요.', cell_format1)
ws.write(2, 2, '바보입니다.', cell_format2)
wb.close()
코드를 실행하고 엑셀 파일을 열면 아래와 같이 셀 폰트 관련 설정이 잘 적용된 것을 알 수 있다.
2. 셀 숫자 형식
XlsxWriter에서 제공하는 숫자 형식 설정 관련 기능은 다음과 같다. 사실 하나밖에 없다.
셀 숫자 형식은 엑셀에서 셀 서식에 들어가면 사용자 지정 형식이 있는데 이를 문자열로 넘겨주면 된다.
아래 코드를 통하여 사용법을 익혀보자. 아래 코드는 소수 둘째 자리까지 표현하는 것과 날짜 표시 형식을 지정한 두 가지 셀 포맷을 정의한 다음 셀 값을 입력하고 엑셀 파일로 저장한다.
name = 'number'
wb = Workbook(f'{name}.xlsx')
ws = wb.add_worksheet(f'{name}')
## 딕셔너리로 셀 포맷 정의
cell_format_dict1 = {
'num_format':'0.00' ## 소수 둘째 자리까지 표현
}
cell_format1 = wb.add_format(cell_format_dict1)
## set 메서드로 셀 포맷 정의
cell_format2 = wb.add_format()
cell_format2.set_num_format('yyyy"년"mm"월"dd"일"') ## 날짜 포맷
ws.write(0, 0, '3.141592', cell_format1)
ws.write(2, 2, '36892.521', cell_format2)
wb.close()
이때 셀에 느낌표 표시가 있다면 셀을 더블 클릭 하면 제대로 표시된다.
3. 정렬하기
XlsxWriter에서 제공하는 셀 정렬 관련 기능은 다음과 같다.
이제 코드를 보면서 기능을 파악해보자. 아래 코드는 수평 왼쪽 정렬, 수직 가운데 정렬 셀 포맷과 수평 왼쪽 정렬, 45도 회전 셀 포맷을 정의하고 셀 값을 입력한 뒤 엑셀 파일을 저장한다. 여기서 다루지 않는 설정은 여기를 참고하기 바란다.
name = 'align'
wb = Workbook(f'{name}.xlsx')
ws = wb.add_worksheet(f'{name}')
## 딕셔너리로 셀 포맷 정의
cell_format_dict1 = {
'align':'left', ## 왼쪽 정렬
'valign':'center' ## 수직 가운데 정렬
}
cell_format1 = wb.add_format(cell_format_dict1)
## set 메서드로 셀 포맷 정의
cell_format2 = wb.add_format()
cell_format2.set_align('center') ## 가운데 정렬
cell_format2.set_rotation(45) ## 회전
ws.write(0, 0, '우앙', cell_format1)
ws.write(2, 2, '응가', cell_format2)
wb.close()
코드를 실행하면 다음과 같이 정렬 관련 설정이 잘 적용된 것을 알 수 있다.
4. 배경색, 전경색 설정하기
XlsxWriter에서 제공하는 배경색과 전경색 관련 설정 기능은 다음과 같다.
전경색은 배경색 앞쪽에 있는 색상이며 색상을 지정하는 경우 우리 눈에 보이는 색상이다. 배경색은 뒤에 있는 색이며 전경색과 배경색이 둘 다 설정되어 있으면 배경색은 보이지 않는다.
이제 코드를 보면서 기능을 파악해보자. 아래 코드는 전경색과 배경색을 설정한 셀 포맷을 정의한 것이다. 이때 패턴 관련 옵션도 있는데 이는 0부터 18번까지 총 19개의 패턴을 제공한다. 또한 패턴 색상은 배경색으로 설정한다는 것을 주목하자. 여기서 다루지 않는 설정은 여기를 참고하기 바란다.
name = 'bg_fg'
wb = Workbook(f'{name}.xlsx')
ws = wb.add_worksheet(f'{name}')
## 딕셔너리로 셀 포맷 정의
cell_format_dict1 = {
'fg_color':'#D7E4BC', ## 전경색 색상
}
cell_format1 = wb.add_format(cell_format_dict1)
## set 메서드로 셀 포맷 정의
cell_format2 = wb.add_format()
cell_format2.set_bg_color('#FFFF00') ## 배경색 색상
ws.write(0, 0, 'cell_format1', cell_format1)
ws.write(0, 1, 'cell_format2', cell_format2)
for i in range(0, 19): ## 1~18 패턴 적용
cell_format = wb.add_format()
cell_format.set_fg_color('#FFFFFF')
cell_format.set_bg_color('black')
cell_format.set_pattern(i)
ws.write(i+1, 0, '', cell_format)
ws.write(i+1, 1, f'pattern_{i}')
wb.close()
5. 테두리 그리기
XlsxWriter에서 제공하는 테두리 관련 설정 기능은 다음과 같다.
아래 코드는 테두리 관련 셀 포맷을 정의한 것이다. 테두리는 border를 통해 일괄적으로 테두리 스타일을 지정할 수도 있고 top, bottom, left, right를 이용하여 4방향 테두리를 개별적으로 설정할 수도 있다. 이때 테두리 스타일은 0부터 13번까지 총 14개의 스타일을 지원한다. 테두리 두께 조절은 따로 지원하지 않는 것 같다. 따라서 테두리 스타일 중에서 본인이 원하는 굵기를 갖는 스타일을 고르면 된다. 여기서 다루지 않는 설정은 여기를 참고하기 바란다.
name = 'border'
wb = Workbook(f'{name}.xlsx')
ws = wb.add_worksheet(f'{name}')
## 딕셔너리로 셀 포맷 정의
cell_format_dict1 = {
'border':1, ## 테두리 스타일
'border_color':'#FF0000' ## 테두리 색상
}
cell_format1 = wb.add_format(cell_format_dict1)
## set 메서드로 셀 포맷 정의
cell_format2 = wb.add_format()
cell_format2.set_top(3) ## 위쪽 테두리 스타일
cell_format2.set_right(4) ## 오른쪽 테두리 스타일
cell_format2.set_bottom(6) ## 아래쪽 테두리 스타일
cell_format2.set_left(3) ## 왼쪽 테두리 스타일
cell_format2.set_top_color('#FFFF00') ## 위쪽 테두리 스타일
cell_format2.set_right_color('#FF0000') ## 오른쪽 테두리 스타일
cell_format2.set_bottom_color('#FF00FF') ## 아래쪽 테두리 스타일
cell_format2.set_left_color('##FFBB00') ## 왼쪽 테두리 스타일
ws.write(1, 1, 'format1', cell_format1)
ws.write(2, 2, 'format2', cell_format2)
for i in range(0, 14): ## 0~13 테두리 스타일
row_offset = i//3
col_offset = i%3
cell_format = wb.add_format({'border':i})
ws.write(3+row_offset*2, 1+col_offset*2, f'border_{i}', cell_format)
wb.close()
'프로그래밍 > 엑셀(Excel)' 카테고리의 다른 글
[XlsxWriter] 열(Column) 폭 문자에 맞게 조절하기 (feat. set_column) (0) | 2022.11.11 |
---|---|
[XlsxWriter] 행 높이와 열 폭 조절하기(feat. set_row, set_column) (0) | 2022.11.11 |
[XlsxWriter] 행, 열 고정하기 (feat. freeze_panes) (0) | 2022.11.07 |
[XlsxWriter] 엑셀 파일 생성하기(feat. Workbook) (0) | 2022.10.29 |
[XlsxWriter] XlsxWriter 모듈에 대해서 알아보자(vs OpenPyXL) (0) | 2022.10.29 |
댓글