-
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이 없기때문에 에러가 발생할 수 있는데
없으면 예외 처리를 하고 진행 합니다.
그럼 나 대신에 일할 파이썬 코드 완성 !!!!
나대신 일해라 !!!!
아주 잘 작동하고있구만 !!!!!
피라미드의 돌을 옮기는 힘을 기르지말고
피라미드의 돌을 옴기는 기중기를 개발하라 !
반응형