파이썬 엑셀 저장시 여러 시트 저장 및 열 넓이 조정하기
파이썬을 통해서 엑셀을 저장할 경우가 많은데요.
오늘은 이 때 사용할 수 있는 여러 기능에 대해서 알아보겠습니다.
판다스 엑셀에 저장하기
판다스에서 엑셀에 저장할 때 여러 데이터 프레임을 각각의 시트에 넣어 하나의 파일로 저장하거나 이쁘게 하기 위해서 열 넓이를 조절해야 할 경우가 있을 때 사용할 수 있는 코드입니다.
writer를 통해서 순서대로 시트에 넣을 수 있는데요.
먼저 각각의 데이터 프레임(df1, df2)를 각각의 시트에 넣는 코드입니다. df.to_excel을 할 때 writer를 사용합니다.
with pd.ExcelWriter(파일명.xlsx) as writer:
# use to_excel function and specify the sheet_name and without index
df1.to_excel(writer, sheet_name="1번시트", index=True)
df2.to_excel(writer, sheet_name="2번시트", index=True)
그리고 이 때 약간의 팁이 있는데요. 아래처럼 시트를 추가해서 넣는 방법도 있습니다.
# 최초 생성 이후 mode는 append; 새로운 시트를 추가합니다.
if not os.path.exists('output.xlsx'):
with pd.ExcelWriter('output.xlsx', mode='w', engine='openpyxl') as writer:
df.to_excel(writer, index=False)
else:
with pd.ExcelWriter('output.xlsx', mode='a', engine='openpyxl') as writer:
df.to_excel(writer, index=False)
판다스 자습서는 아래와 같습니다.
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.ExcelWriter.html
그리고 이 때 시트의 옵션을 설정할 수 있는데요. 워크시트의 열 넓이 및 서식 지정을 할 수 있습니다.
예1) B열 ~ E 열 넓이 변경
ws.set_column(1, 4, 50)
ws.set_column('B:E', 50)
예2) B열 ~ E 열 넓이 및 서식 변경
ws.set_column(1, 4, 50, format_bold)
예3) B열 ~ E 열 넓이 변경없이 서식만 변경
ws.set_column('B:E', None, format_bold)
with pd.ExcelWriter(파일명.xlsx) as writer:
# use to_excel function and specify the sheet_name and without index
df1.to_excel(writer, sheet_name="1번시트", index=True)
ws = writer.sheets['1번시트'] ## 칼럼 폭 조절
ws.set_column(0, 0, 5)
ws.set_column(1, 1, 25)
ws.set_column(3, 3, 12)
ws.set_column(4, 4, 25)
df2.to_excel(writer, sheet_name="2번시트", index=True)
그리고 넓이는 순서대로 들어가게 됩니다.
ws.set.column에 번호를 넣고 마지막에 넓이를 넣으면 원하는 넓이로 조절됩니다.
그럼 잘 사용하시기 바랍니다.