openpyxl - 여러 엑셀파일 데이터 가져오기
본문 바로가기
파이썬(Python)/파이썬으로 엑셀 제어하기

openpyxl - 여러 엑셀파일 데이터 가져오기

by Squat Lee 2020. 12. 31.

여러개의 엑셀파일에 있는 데이터를 하나의 엑셀파일로 가져와 보겠습니다.

 

 

'Test'라는 이름의 폴더를 만든다음 임의로 엑셀파일을 3개 만들어 보겠습니다.

 

'Test' 폴더 안에는 각각의 파일에 아래 그림과 같이 글자를 임의로 입력 하였습니다.

 

 

전체 코드는 본 포스트의 맨 아래에 있으니 참고하시기 바랍니다.

 

여러개의 엑셀파일의 데이터를 가져오기 위해서는 총 3개의 모듈이 필요합니다.

 

'os' 모듈은 정해진 경로의 폴더내에 있는 엑셀파일의 이름을 가져오기 위해 필요하며,

 

openpyxl 패키지의 'Workbook' 과 'load_workbook'은 각각 엑셀파일 생성과 폴더내의 엑셀파일을 열기위해 필요합니다.

 

폴더의 경로는 'path'라는 변수에 입력합니다.

 

각 파일의 Worksheet를 'ws'라는 변수에 입력하고, 취합할 파일의 Worksheet는 'o_ws'로 사용할 예정입니다.

 

각 파일의 시트(ws)에서 한 씩 차례대로 데이터를 입력합니다.

 

'data'라는 List를 만들어서 각 열(row)의 셀에 있는 데이터 값을 'data' 리스트에 추가 합니다.

 

이 데이터는 취합할 파일의 시트인 'o_ws'에 입력합니다.

 

 

  각 파일 이름은 'os.listdir(path)'을 통해 리스트 행태로 'files'라는 변수에 저장됩니다.

 

'o_wb'라는 워크북을 만들고 활성화 된 시트를 'o_ws'라는 변수로 정합니다.

 

각 파일의 파일들을 열어서 'wb'라는 변수에 저장하고, 'wb' 워크북의 활성화 된 시트를 'ws'라는 변수로 정합니다.

 

그리고 위에서 만든 'data_input' 함수에 'ws' 와 'o_ws'의 인자를 입력해 줍니다.

 

마지막으로 취합된 파일인 'o_wb'는 같은 폴더에 'Total.xlsx'라는 이름으로 저장해 줍니다.

 

코드를 실행하면, 'Total.xlsx'라는 파일이 생성된 것을 확인할 수 있습니다.

 

파일에 각 파일의 데이터를 가져와 입력된 것을 확인할 수 있습니다.

 

전체 코드는 아래와 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import os
from openpyxl import Workbook
from openpyxl import load_workbook
 
path = 'C:\\Users\\Administrator\\Desktop\\Test'
 
def file_input(path): #각 파일 가져오기
    files = os.listdir(path)
    o_wb = Workbook()
    o_ws = o_wb.active
    for file in files:
        wb = load_workbook(path + '\\' + file)
        ws = wb.active
        data_input(ws, o_ws)
    o_wb.save(path + '\\' + 'Total.xlsx')
 
def data_input(ws, o_ws): # 각 파일별로 데이터 넣기
    for row in ws.iter_rows():
        data = []
        for cell in row:
            data.append(cell.value)
        o_ws.append(data)
        return o_ws
 
file_input(path)
cs

 

혼자 파이썬을 공부하려면 아래 책을 추천합니다.↓

 

혼자 공부하는 첫 프로그래밍 with 파이썬:1:1 과외하듯 배우는 왕초보 코딩 입문서, 한빛미디어

 

쿠팡파트너스 활동으로 쿠팡으로부터 소정의 수수료를 받을 수 있습니다.

728x90
반응형

댓글