상세 컨텐츠

본문 제목

[Python] csv를 1개의 엑셀 파일로 합치기

[기록] Programming

by brightwing1218 2022. 6. 6. 13:30

본문

결과물

  • 특정 디렉토리 내에 있는 모든 csv를 감지.
  • 감지한 csv 전체를 해당 디렉토리 내 Result.xlsx의 각 시트로 저장
  • 합칠 csv 이름이 31글자가 넘어갈 경우 시트명으로 저장 시 31글자까지만 입력.
input output

코드 원문

import os
import pandas as pd

file_path = 'csv가 저장된 디렉토리'

#결과 저장용 워크시트를 만든다.
xlsx_dir = file_path+'/'+'Result.xlsx'

#디렉토리 내 모든 파일 제목을 리스트화
lst_allfiles= os.listdir(file_path)

#디렉토리의 모든 파일에서 csv파일만 발라낸다.
lst_csv = []
for element in lst_allfiles:
    if element[-4:] == ".csv":
        lst_csv.append(element)        
    else:
        pass

#csv파일을 모두 오픈하여,
with pd.ExcelWriter(xlsx_dir) as writer:
    
    #저장할 시트 이름 계산 (31글자 초과할 경우 처리)
    for element in lst_csv:
        if len(element[:-4]) > 31:            
            result_name = element[:(len(element[:-4]) - 31 + 4)*(-1)]
            
        else:
            result_name = element[:-4]
               
        #엑셀 파일 각 시트로 등록
        df_csv = pd.read_csv(file_path+'/'+element)
        df_csv.to_excel(writer, sheet_name = result_name, index = False)

Comment

  • 업무 특성 상 csv로 받아온 데이터 파일을 일일이 하나하나 들춰 볼 일이 많았다.
  • 아무래도 이 코드를 돌려서 엑셀파일로 합치면 파일을 하나씩 켜고 끄는 수고가 덜어져서 조금 더 편해진다.

관련글 더보기

댓글 영역