Python openpyxl 셀 수직 정렬 방법에는 5가지가 있습니다. 함께 알아보겠습니다.
목차
Python openpyxl 셀 수직 정렬 방법 5가지
openpyxl을 이용해서 셀 텍스트의 내용을 수직 정렬 하기 위해서는 Alignment 클래스를 이용하여 vertical 파라미터에 ‘top’, ‘distributed’, ‘justify’, ‘center’, ‘bottom’의 값을 사용할 수 있습니다. 셀의 내용은 대한민국 헌법 1조의 문장으로 채워보았습니다.
5가지 정렬 방법을 A1부터 A5까지 5개 셀에 적용시켜보았습니다. 라인 7에는 vertical 파라미터에 넘겨줄 문자열들이 준비되어 있으며, 라인 10~11에서는 해당 셀에 alignment를 적용하는 과정입니다.
from openpyxl import Workbook
from openpyxl.styles import Alignment
wb = Workbook()
ws = wb.active
aligns = ['top', 'distributed', 'justify', 'center', 'bottom']
row_num = 1
for align in aligns:
alignment = Alignment(vertical=align)
ws[f'A{row_num}'].alignment = alignment
ws[f'A{row_num}'].value = f"수직 정렬: {align}\n①대한민국은 민주공화국이다.\n②대한민국의 주권은 국민에게 있고, 모든 권력은 국민으로부터 나온다."
ws.row_dimensions[row_num].height = 90
row_num += 1
ws.column_dimensions['A'].width = 30
wb.save("output_vertical.xlsx")
Python그러면 사용한 파라미터들을 하나씩 확인해 보도록 하겠습니다. 아래의 그림1의 예시와 함께 확인하시면 보다 정확한 확인이 가능합니다.
- top: 셀의 내용을 셀 상단에 배치하는 수직 정렬 방식입니다.
- distributed: 셀의 내용을 분산시키는 방식인데, ‘\n’을 이용해서 줄바꿈을 한 경우에는 적용되지 않으며, 줄바꿈을 하지 않은 헌법 1조 2항의 내용이 남은 공간에서 분산되는 것을 확인할 수 있습니다.
- justify: distributed와 명확히 어떤 차이가 있는지 모르겠습니다. 동일한 역할을 하고 있습니다. 혹시 다른 결과가 만들어지는 상황을 아시는 분은 댓글 부탁드립니다.^^ 특히 distributed와 justify의 경우에는 문장이 길어지는 경우 셀 안에서 텍스트가 wrap 처리가 되어 텍스트가 셀 영역을 벗어나지 않게 됩니다.
- center: 셀 내의 텍스트가 수직으로 중앙에 배치됩니다.
- bottom: 셀 내의 텍스트가 수직으로 바닥에 배치됩니다.
![그림 1. Python openpyxl 셀 수직 정렬 방법 5가지 적용 예시](https://osg.kr/wp-content/uploads/2024/06/image-3.png)
관련 자료
openpyxl.sheets의 alignment 클래스의 vertical 파라미터 관련 문서를 참조했습니다.