# read
files = pathlib.Path(<디렉토리주소>).glob('*.xlsx')
for file in list(files):
file = os.path.normpath(file)
allData = pd.concat([allData, pd.read_excel(file, usecols=[0,2,7,9,10,17])], ignore_index=True) # concat all dataFrames
if allData.shape[0]>1048575: return False #엑셀시트 최대 행수 초과 시 예외처리
# 결측치 제거
allData = allData.dropna() #null check
# 결측치 제거
exceptList = [
'',
'test',
'test2',
'error code',
'빼고싶은 단어',
' 비정상타입 데이터',
' . ',
]
exceptOption = '|'.join(exceptList)
allData = allData[~allData['카테고리'].str.contains(exceptOption)]
# 필터링 및 문자열 변환, 타입변환
allData['상품수량'] = pd.to_numeric(allData['상품수량'], errors ='coerce').fillna(0).astype('int')
allData['판매가'] = pd.to_numeric(allData['판매가'], errors ='coerce').fillna(0).astype('int')
allData = allData.loc[allData['CS']=='정상'] #filtering CS
allData['카테고리'] = allData['카테고리'].apply(lambda x:str(x).replace(' ','')).apply(lambda x:x.replace(' ',' -> ')).apply(categoryClean) #category clean
allData['발주일'] = allData['발주일'].apply(lambda x:str(x)[0:7]) #date format
allData['상품수량'] = allData['상품수량'].apply(lambda x:int(x)) #numeric filter
# 합계를 위한 데이터병합
sumData = allData.groupby(['발주일','판매처','카테고리']).sum()
# unique 파일명 생성
now = datetime.now()
resultFileName = f"{now.strftime('%Y-%m-%d(%H_%M_%S)')}.xlsx"
# 엑셀서식 세팅 및
file_path = f"{resultDir}/{resultFileName}"
with pd.ExcelWriter(file_path, engine='xlsxwriter') as writer:
sumData.to_excel(writer)
ws = writer.sheets['Sheet1']
#fix width of columns
ws.set_column(0, 1, 20)
ws.set_column(1, 2, 20)
ws.set_column(2, 3, 40)
ws.set_column(3, 4, 15)
ws.set_column(4, 5, 15)