※ 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은 밑줄이다.
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을 많이 쓴다.
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을 통해 사용하는 방법을 정리해볼 예정이다.
'코딩 > 업무자동화' 카테고리의 다른 글
[파이썬/업무자동화] openpyxl 시트 조작 방법 4가지 (0) | 2021.11.09 |
---|---|
[파이썬/업무자동화] openypyxl 통해 엑셀 조건부 서식 적용하기 (0) | 2021.10.16 |
[파이썬/업무자동화] 여러 파일에 이미지 삽입하기 + 이미지 크기 변경(Pillow) (0) | 2021.09.25 |
[파이썬/업무자동화] 엑셀에 입력 된 파일명 따라 이미지 삽입하기 - openpyxl (4) | 2021.08.30 |
[파이썬/업무자동화] Openpyxl 통해 엑셀 함수 사용하기 2편 (0) | 2021.08.21 |