본문 바로가기
프로그래밍/엑셀(Excel)

[XlsxWriter] 열(Column) 폭 문자에 맞게 조절하기 (feat. set_column)

by 부자 꽁냥이 2022. 11. 11.

이번 포스팅에서는 엑셀(Excel)에서 셀 안에 텍스트 폭에 맞게 칼럼 폭을 조절하는 방법을 알아보려고 한다. XlsxWriter 파이썬(Python) 모듈에서는 문자에 맞게 자동으로 열 폭을 맞춰주지 않는다. 따라서 수동으로 조절해줘야 하는데 set_column을 이용하면 자동으로 열 폭을 맞춰준 것과 비슷한 효과를 낼 수 있다.


   열(Column) 폭 문자에 맞게 조절하기 (feat. set_column)

나 같은 경우 영어 소문자, 대문자, 숫자, 한국어 그리고 나머지 총 5가지 카테고리별로 한 글자당 폭 수를 실험을 통하여 결정했다.

 

먼저 칼럼 폭을 조절하지 않을 경우 다음과 같이 텍스트가 길면 짤리는 것을 알 수 있다.

 

칼럼 폭을 조절하지 않으면 텍스트가 긴 경우 잘려나간다.

자 이제 아래 코드를 통해 칼럼을 예쁘게 조절해보자. 이때 수평으로 가운데 정렬을 시켜줬다.

 

from xlsxwriter import Workbook

wb = Workbook('cell_width.xlsx')
ws = wb.add_worksheet()

def get_width(test_str):
    import string
    import re
    letter_to_width = {
        'lower' : 0.95, ## 영어 소문자 하나 당 칼럼 폭
        'upper' : 1.18, ## 영어 대문자 하나 당 칼럼 폭
        'digit' : 1, ## 숫자 하나 당 칼럼 폭
        'korea' : 1.85, ## 한국어 하나 당 칼럼 폭
        'other' : 0.95 ## 나머지
    }
    width = 0
    for c in test_str:
        if c in string.ascii_lowercase:
            width += letter_to_width['lower']
        elif c in string.ascii_uppercase:
            width += letter_to_width['upper']
        elif c in string.digits:
            width += letter_to_width['digit']
        elif re.match(r'[ㄱ-힣]', c):
            width += letter_to_width['korea']
        else:
            width += letter_to_width['other']
    return width

## 가운데 정렬
cell_format = wb.add_format() 
cell_format.set_align('center')

test_str1 = '안녕하세요'
cell_width = get_width(test_str1)
ws.write(0, 0, test_str1, cell_format)
ws.set_column(0, 0, cell_width) ## 첫 번째 열 칼럼 폭 조정

test_str2 = 'Hi, how are you? 123'
cell_width = get_width(test_str2)
ws.write(0, 1, test_str2, cell_format)
ws.set_column(1, 1, cell_width) ## 첫 번째 열 칼럼 폭 조정
wb.close()

 

코드를 실행하고 엑셀 파일을 열면 다음과 같이 짤리지 않고 셀 폭이 적절하게 바뀐 것을 알 수 있다.

 


댓글


맨 위로