openpyxl을 이용해서 셀 서식을 설정할 때 음수를 특별한 방식으로 표현하고 싶은 경우가 있습니다. openpyxl 셀 서식 음수 설정 방법을 알아보도록 하겠습니다.
목차
openpyxl 셀 서식 음수 설정 방법
음수만 독특하게 표현하고 싶은 경우가 있습니다. 예를 들면, 음수를 파란색으로 표현하거나, 빨간색으로 표시하되 가로를쳐서 표현하고 음수 기호가 보이지 않게 하는 것과 같이 말이죠.
코드를 통해서 바로 살펴보도록 하겠습니다.
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
CUSTOM_FORMAT = '"₩"#,##0_);[RED]("₩"#,##0)'
ws['A1'].value = 1234.5678
ws['A1'].number_format = CUSTOM_FORMAT
ws['A2'].value = -1234.5678
ws['A2'].number_format = CUSTOM_FORMAT
ws.column_dimensions['A'].width = 15
wb.save("number_format_for_negative_numbers.xlsx")
Python위의 라인 6의 커스텀 포맷 문자열을 사용하면 아래 그림과 같이 원화가 붙는 숫자 표현이 가능합니다.
그럼 사용한 CUSTOM_FORMAT에서 사용한 openpyxl 셀 서식 음수 설정 형식을 살펴보겠습니다.
음수 표현 셀 서식 설명
중간에 세미콜론(;)을 중심으로 왼쪽과 오른쪽이 나뉘어 집니다. 왼쪽은 양수인 경우에 표현하는 방식이고, 오른쪽은 음수인 경우에 표현하는 방식입니다.
- 양수의 표현방식: “₩”#,##0_)
- “₩”는 원화표시를 무조건 붙이라는 것입니다.
- #,##0은 세 자리 단위로 콤마(,)를 찍어주라는 것입니다.
- _)는 ) 문자의 폭만큼 공백을 두라는 것입니다. 위의 그림 1에서 보면 양수인 경우 오른쪽 경계에서 ) 문자 폭 만큼 떨어져서 쓰인 것을 볼 수 있습니다. 이렇게 하면 음수와 양수가 거의 같은 선상에서 표현되게 되므로 숫자가 들락날락하지 않아서 보기 편합니다.
- 음수의 표현방식: [RED](“₩”#,##0)
- [RED]는 글자를 빨간색으로 표시하라는 의미입니다.
- (와 )는 숫자를 괄호 안에 표시하겠다는 의미입니다.
- “₩”와 #,##0은 양수 표현 방식에서와 동일하게 제일 앞에 원화 기호를 붙이고 세 자리 단위로 콤마를 찍어주라는 뜻입니다.
양수에도 색상 지정하기
위에서 작성한 코드에서 CUSTOM_FORMAT만 조금 변경해 주면 됩니다. 양수의 경우 파란색으로 표시하기 위해서 [BLUE] 문자열을 추가했습니다.
CUSTOM_FORMAT = '[BLUE]"₩"#,##0_);[RED]("₩"#,##0)'
Python양수에 파란색을 지정한 결과는 아래와 같습니다.
기본적으로 숫자서식을 처리하는 방법이 궁금하신 분은 Python openpyxl 셀 서식 숫자 설정 방법 5가지를 먼저 살펴보시기 바랍니다.
관련 자료
openpyxl.styles.numbers 모듈 페이지와 openpyxl의 해당 코드를 참고했습니다.