보다 사용자에게 보여주기 유용한 엑셀을 작성하고자 할 때 유용한 옵션으로, 실제는 스타일 시트를 추가로 입히는 작업이라고 할 수 있다.
먼저 적용할 부분은 컬럼 크기를 글자 크기에 맞춰서 작성하는 코드이다.
>>> dict_list = [{'name':'han','age':'10','loc':'seoul','txt':'abcd','txt2':'abcd'},{'name':'kim','age':'14','loc':'busan','txt':'aasdfljleiasdfnncvlasdlhja','txt2':'abcd'},{'name':'lee','age':'12','loc':'iksan','txt':'asdfffffffffffcjkdsakfkdashjfkjlasdfjhasidasdfadsfasdfuoia','txt2':'abcd'}]
>>> df = pd.DataFrame(dict_list)
>>> with pd.ExcelWriter('test.xlsx', engine='xlsxwriter') as excelwriter:
... df.to_excel(excelwriter, sheet_name='all', index=False)
기본적인 코드로 저장하게 되면, txt의 내용들이 잘려서 컬럼을 확장하지 않는 이상 보이지 않게 된다
이를 개선하기 위해서는 컬럼 크기값을 주어서 해소가 가능하다.
컬럼 크기 자동 설정(Auto-Column length)
여기에서는 과도한게 큰 컬럼을 방지하기 위해서 100 이상인 경우는 100으로 고정하는 코드를 추가하였다.
>>> with pd.ExcelWriter('test.xlsx', engine='xlsxwriter') as excelwriter:
... df.to_excel(excelwriter, sheet_name='all', index=False)
... for column in df:
... column_length = max(df[column].astype(str).map(len).max(), len(column))
... col_idx = df.columns.get_loc(column)
... if column_length > 100:
... column_length = 100
... excelwriter.sheets['all'].set_column(col_idx, col_idx, column_length)
자동 줄 바꿈(Warp-Text)
이외에 과다한 텍스트인 경우에는 자동 줄 바꿈을 이용하면 장문의 메세지를 효과적으로 표현할 수 있는데,
이를 코드상으로 적용해보면 다음과 같이 workbook을 생성해서 스타일로 지정이 가능하다.
테스트를 위해서 10 이상인 경우 자동 줄 바꿈을 적용하도록 했다.
>>> with pd.ExcelWriter('test.xlsx', engine='xlsxwriter') as excelwriter:
... df.to_excel(excelwriter, sheet_name='all', index=False)
... workbook= excelwriter.book
... for column in df:
... column_length = max(df[column].astype(str).map(len).max(), len(column))
... col_idx = df.columns.get_loc(column)
... wrap_format = workbook.add_format({'text_wrap': True})
... if column_length > 10:
... column_length = 10
... excelwriter.sheets['all'].set_column(col_idx, col_idx, column_length, wrap_format)
... else:
... excelwriter.sheets['all'].set_column(col_idx, col_idx, column_length)
...
'Python' 카테고리의 다른 글
Python - AWS S3 Select 와 Atena 차이점, 기본 사용법 (0) | 2024.03.07 |
---|---|
pymysql error - RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods (0) | 2024.03.07 |
Python - 딕셔너리(dict) 리스트 정렬 하기(sort) (0) | 2024.03.06 |
Python - 리소스 및 코드 하나로 실행, Single-file executables (0) | 2024.03.03 |
Python - sqlalchemy bigint를 id 값으로 사용해야 하는 이유 (0) | 2024.03.03 |