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