엑셀, Libre Office의 Calc 등의 스프레드시트에서 양수와 음수에 따라 다른 색상으로 표현하고 싶을 때가 있죠. openpyxl 셀 서식 양수, 음수 색상 표현 방법을 알아보겠습니다.
목차
openpyxl 셀 서식 양수, 음수 색상 표현
기본적으로 [RED] 또는 [BLUE]와 같이 색상을 지정할 수 있습니다. 이번 포스팅에서는 사용할 수 있는 색상의 범위와 종류에 대해서 알아보도록 하겠습니다.
그리고 음수를 다른 서식으로 표현하는 방법에 대한 자세한 설명은 Python openpyxl 셀 서식 음수 설정 방법을 살펴보시면 됩니다.
색상을 표현하는 방법에는 두 가지가 있습니다. 직접 색상 이름을 적어주는 방식입니다. 이 경우 사용할 수 있는 8가지 색상이 있습니다.
그 다음은 색상의 번호를 사용하는 방법인데, 스프레드시트별로 차이가 다소 있습니다. 어떻게 다른지도 함께 살펴보도록 하겠습니다.
openpyxl 셀 서식 색상 표현 방법
색상 이름을 사용해서 셀 서식 색상 지정 방법
셀 서식에서 나타나는 글자의 색상을 지정하는데 사용할 수 있는 8가지 색상을 코드로 모두 표현해 보도록 하겠습니다. 흰색도 있어서 표현이 잘 되도록 배경색을 #AAAAAA로 지정했습니다.
from openpyxl import Workbook
from openpyxl.styles import PatternFill
wb = Workbook()
ws = wb.active
colors = ['BLACK', 'BLUE', 'CYAN', 'GREEN', 'MAGENTA', 'RED', 'WHITE', 'YELLOW']
row_num = 1
for color in colors:
CUSTOM_FORMAT = f'"₩"#,##0_);[{color}]("₩"#,##0)'
cell_position = f'A{row_num}'
color_position = f'B{row_num}'
ws[cell_position].value = -1234.5678
ws[cell_position].number_format = CUSTOM_FORMAT
fill = PatternFill(start_color="aaaaaa", end_color="aaaaaa", fill_type="solid")
ws[cell_position].fill = fill
ws[color_position].value = color
row_num += 1
ws.column_dimensions['A'].width = 15
ws.column_dimensions['B'].width = 15
wb.save("number_format_using_color_names.xlsx")
Python사용할 수 있는 색상은 다음과 같이 있습니다.
- BLACK
- BLUE
- CYAN
- GREEN
- MAGENTA
- RED
- WHITE
- YELLOW
![그림 1. openpyxl 셀 서식 색상 설정: 색상이름을 이용한 방식](https://osg.kr/wp-content/uploads/2024/06/image-20240621-051807.png)
그림 1. openpyxl 셀 서식 색상 설정: 색상이름을 이용한 방식
색상 번호를 사용해서 색상 지정하기
Libre Office의 Calc와 Microsoft Excel에서의 색상에 차이가 있습니다. 따라서 LibreOffice의 Calc와 Excel 간에 색상이 호환되지 않습니다. 색상 번호를 이용하는 경우에는 반드시 사용자가 Libre Office 또는 Excel을 사용하는 경우가 명확한 경우에만 사용하시길 바랍니다.
동일한 엑셀 파일을 열었는데 다른 결과가 나타나는 것을 아래 그림 2와 그림 3을 통해서 확인할 수 있습니다.
먼저 Libre Office의 Calc에서 해당 파일을 열어본 결과입니다. Calc에서는 색상값을 COLOR1부터 COLOR64까지 적용할 수 있습니다.
![그림 2. openpyxl 셀 서식 색상 설정: 색상 번호를 이용한 방식(LibreOffice Calc)](https://osg.kr/wp-content/uploads/2024/06/image-20240621-060932-1024x311.png)
이번에는 DropBox의 Excel 에디터를 통해서 열어본 결과입니다. 색상이 COLOR1부터 COLOR56번까지만 표현되며 앞서 살펴본 그림 2와 전혀 다른 색상으로 구성되어 있는 것을 확인할 수 있습니다.
![그림 3. openpyxl 셀 서식 색상 설정: 색상 번호를 이용한 방식(Dropbox Excel Editor)](https://osg.kr/wp-content/uploads/2024/06/image-20240621-061039-1024x311.png)
마지막으로 다시 한 번 말씀드리지만 색상번호는 스프레드시트에 따라 호환되지 않으니 가능하면 사용하지 않으시길 권하며, 반드시 꼭 사용해야겠다면 생성된 엑셀파일을 사용하는 스프레드시트의 종류가 확정된 경우에만 사용하시길 바랍니다.
관련 자료
openpyxl.styles.numbers 모듈 페이지와 LibreOffice의 Number Format Code 그리고 Microsoft의 숫자 서식을 사용자 지정하는 지침을 참고해서 직접 궁금한 부분들을 확인해 보았습니다.