ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • excel to csv multi sheet! 엑셀 여러시트 csv로 한번에 저장하기 with python
    카테고리 없음 2021. 9. 6. 17:21
    반응형

    어느날

    엑셀로 되어있는 파일을 csv 로 저장하고 싶었다.

    그런데........ 하나의 파일에 시트가 여러개 있는것이 아닌가???????

    딥빡....

    파일이 하나면은 하겠는데 파일이 여러개.. 시트도 여러개.....

    파일수 * 시트수 의 작업이 필요했다.......

    20 * 12 = 120번???????????????????????????

    파일의 용량도 커서... 열고 닫고 저장하고 시간이 너무 많이 걸린다.........

    그래서 나 대신에 이 작업을 할 python code 를 만들었다 !!

    필요한 패키지 설치.

    pip install pandas

    pip install openpyxl pandas, openpyxl 를 설치해야한다.

    1. 디렉토리의 모든 파일 이름과 경로를 가져오는 함수 정의.

     

    import os
    path = '_원하는디렉토리경로_'
    
    def allfiles(path):
        res = []
    
        for root, dirs, files in os.walk(path):
            rootpath = os.path.join(os.path.abspath(path), root)
    
            for file in files:
                filepath = os.path.join(rootpath, file)
                res.append(filepath)
        
        return res

    2. 각 엑셀 파일을 읽고, 시트를 읽어서 csv로 저장하기.

    import pandas as pd
    
    for file in file_list[1:]:
        for sheet in range(1,13):
            try :
                # pd.read_excel('읽을파일',sheet_name = '읽을 시트 이름', engine='openpyxl)
                # 저자는 시트 이름이 월(1월,2월,3월 ...12월) 로 반복적이기 때문이 이와같이 작성했습니다.
                df_sheet_multi = pd.read_excel(file,sheet_name ='{}월'.format(sheet),engine='openpyxl')
                #저장할 파일명을 만들기 위해서 작성한 소스코드, 수정하여 사용하세요
                file_name = file.split('\\')
                file_name = file_name[3][:8]
                # 여기까지.   to_csv('저장할 파일명(경로/파일명).csv') 로 저장할 수 있슴.
                df_sheet_multi.to_csv("{}_{}.csv".format(file_name,sheet))
                print("save : "+ "{}_{}.csv".format(file_name,sheet))
            except Exception as e:
                print(e, 'is not file')

     

    또한 sheet 중에서 없는 월 이 있기 때문에

    try :

    except: 문을 사용해서 예외처리를 해줬습니다.

    >> ex ) 1월, 2월, 3월, 7월, 8월 ... 의 경우 4,5,6이 없기때문에 에러가 발생할 수 있는데

    없으면 예외 처리를 하고 진행 합니다.

    그럼 나 대신에 일할 파이썬 코드 완성 !!!!

    나대신 일해라 !!!!

    아주 잘 작동하고있구만 !!!!!

    피라미드의 돌을 옮기는 힘을 기르지말고

    피라미드의 돌을 옴기는 기중기를 개발하라 !

    반응형

    댓글

Designed by Tistory.