이번 포스팅에서는 엑셀(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()
코드를 실행하고 엑셀 파일을 열면 다음과 같이 짤리지 않고 셀 폭이 적절하게 바뀐 것을 알 수 있다.

댓글