본문 바로가기
python

[python][win32com] 여러 엑셀 파일 자료를 한 시트로 모으기

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

이전글에서 python 의 win32com 패키지를 사용해서 

여러파일에 있는 sheet 를 한개의 파일로 복사해서 붙혀오는 작업을 했다. 

 

 

Python, 파이참에서 win32com 설치, 여러파일에서 시트 복사해서 하나로 모으기

Python 을 사용해서 여러개의 파일에 있는 내용들을 모으는 프로그램이다. 회사에서는 pandas 사용이 자유롭지 않아서, win32com 이라는 패키지를 사용했는데, 윈도우에서의 응용 프로그램을 실행하

manakim.tistory.com

 

이번에는 여러파일에 있는 자료들을 새로운 파일의 새로운 1개의 시트에 모아보도록 하자. 

 

import win32com.client

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

allDataWB = excel.Workbooks.Add()
allDataWS = allDataWB.Worksheets("Sheet1")
allDataWS.Name = "newdata"

all_i = 1
all_j = 1

for k in range(1, 6):

    path = "D:/datafile" + str(k) + ".xlsx"
    workbook = excel.Workbooks.Open(path)
    sheet = workbook.WorkSheets("Sheet1")
    print(path)

    for i in range(1, 12):

        for j in range(1, 12):

            allDataWS.Cells(all_i, all_j).Value = sheet.Cells(i, j).Value
            all_j = all_j + 1

        all_i = all_i + 1
        all_j = 1


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

 

datafile1~5 의 각 sheet1 에 11x11 개의 자료가 들어있는 상황이다. 

for문을 3번 돌린게 마음에 걸리기는 하지만, 일단은 잘 돌아간다. ㅋㅋ

k 는 파일명을 구분, i 는 각 파일의 행, j 는 각파일의 열을 구분한다. 

Cells() 함수를 써서 11x11 자료를 하나하나 복사해서 가져왔다. 

반응형

댓글