본문 바로가기
python

[python][win32com] 파이참에서 설치, 엑셀 여러파일에서 시트를 하나로 모으기

디지털노마드 2023. 1. 3.
반응형

Python 을 사용해서 여러개의 파일에 있는 내용들을 모으는 프로그램이다. 

회사에서는 pandas 사용이 자유롭지 않아서, win32com 이라는 패키지를 사용했는데, 

윈도우에서의 응용 프로그램을 실행하는 패키지인것 같다. 

 

파이참에서 win32com 을 설치하기 위해서는 

Ctrl + Alt + S 를 눌러서 Setting 으로 들어간다. 

들어가서, Project > Python Interpreter 로 들어가면 설치된 패키지들이 보인다. 

여기서 + 버튼을 누른다. 

 

 

여기서 pywin32 를 검색하고 Install Package 를 눌러서 설치하면 

import win32com.client 를 사용할 수 있게 된다. 

 

아래 예제는 D:\ 에 있는

datafile1.xlsx, datafile2.xlsx, datafile3.xlsx, datafile4.xlsx, datafile5.xlsx 의 

각 Sheet1을 새로운 파일에 복사해서 모으려고 한다. 

 

import win32com.client

excel = win32com.client.Dispatch('Excel.Application')
excel.Visible = False
excel.DisplayAlerts = False

allDataWB = excel.Workbooks.Add()

numOfData = 5

for i in range(1, numOfData + 1):

    path = "D:/datafile" + str(i) + ".xlsx"
    print(path)
    workbook = excel.Workbooks.Open(path)
    sheet = workbook.WorkSheets("Sheet1")
    sheet.Copy(Before = allDataWB.Worksheets(1))
    allDataWB.Worksheets("Sheet1 (2)").Name = "datafile" + str(i)
    workbook.Close(True)

allDataWB.SaveAs(r"D:/all.xlsx")
allDataWB.Close(True)
excel.Quit()

 

처음으로 만든 프로그램이라 무식하게 구현했지만, 잘돌아간다. ㅋㅋㅋ

all.xlsx 라는 프로그램에 datafile1~5 까지의 Sheet 로 모아놓았다. 

나중에 파일의 개수가 많아지면 numOfData 만 수정하고

파일명과 시트명을 잘 설정해두면 잘 돌아갈 것으로 보인다. 

반응형

댓글