Programming/Python

파이썬 엑셀 저장시 여러 시트 저장 및 열 넓이 조정하기

remake 2024. 3. 18. 16:17

파이썬을 통해서 엑셀을 저장할 경우가 많은데요.

오늘은 이 때 사용할 수 있는 여러 기능에 대해서 알아보겠습니다.

 

판다스 엑셀에 저장하기

판다스에서 엑셀에 저장할 때 여러 데이터 프레임을 각각의 시트에 넣어 하나의 파일로 저장하거나 이쁘게 하기 위해서 열 넓이를 조절해야 할 경우가 있을 때 사용할 수 있는 코드입니다.

 

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

 

pandas.ExcelWriter — pandas 2.2.1 documentation

Extra options that make sense for a particular storage connection, e.g. host, port, username, password, etc. For HTTP(S) URLs the key-value pairs are forwarded to urllib.request.Request as header options. For other URLs (e.g. starting with “s3://”, and

pandas.pydata.org

 

그리고 이 때 시트의 옵션을 설정할 수 있는데요.  워크시트의 열 넓이 및 서식 지정을 할 수 있습니다.

예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에 번호를 넣고 마지막에 넓이를 넣으면 원하는 넓이로 조절됩니다.

 

그럼 잘 사용하시기 바랍니다.