본문 바로가기
Programming/업무자동화

[업무자동화] 엑셀파일 하나로 결합하기

by 느리게 걷는 즐거움 2024. 4. 4.
728x90
반응형

엑셀은 업무에서 매우 중요한 도구 중 하나로 사용됩니다. 하지만 여러 개의 엑셀 파일을 다루다보면 데이터를 통합하거나 분석하기 번거로운 경우가 있습니다. 이런 문제를 해결하기 위해 엑셀 파일을 하나로 결합하는 파이썬 프로그램을 공유합니다.

동작구조

프로그램을 실행하면 프로그램을 원하는 폴더에 저장하고 폴더에 [excels]폴더를 생성합니다. 생성한 폴더에 결합을 원하는 excel파일을 복사합니다.

위와 같은 폴더 구조로 준비합니다. excels 폴더 내부에는 결합을 원하는 excel파일을 아래와 같이 저장합니다. 각각의 excel파일의 정보는 [result.xlsx]파일에 합쳐진 후 파일이 생성됩니다.

코드는 아래와 같습니다. 파이썬 파일을 생성한 후 파이썬 파일을 실행하면 결합된 엑셀파일을 얻을 수 있습니다. 윈도우에서 바로 실행가능한 실행파일이 필요하신 분은 댓글로 알려주세요.

 

라이브러리 설치

프로그램을 실행하기 위해서 파이썬 라이브러리 설치가 필요합니다. 아래 명령으로 필요한 라이브러리를 설치해주세요.

pip3 install numpy
pip3 install pandas
pip3 install openpyxl

 

코드 정보
# -*- coding: utf-8 -*-

import os
import pandas as pd
from pathlib import Path
from openpyxl import load_workbook

def merge_excel_files(folder_path, output_file):

    # 새로운 폴더를 생성할 경로
    folder_path = Path(folder_path)

    # 폴더가 존재하지 않는 경우에만 폴더 생성
    if not folder_path.exists():
        folder_path.mkdir(parents=True, exist_ok=True)
        print(f"폴더 '{folder_path}'가 생성되었습니다.")
    else:
        print(f"폴더 '{folder_path}'가 이미 존재합니다.")

    # 폴더 내의 모든 엑셀 파일 가져오기
    excel_files = [file for file in os.listdir(folder_path) if file.endswith('.xlsx')]
    print(excel_files)
    # 모든 데이터를 저장할 빈 DataFrame 생성
    merged_data = pd.DataFrame()

    # 각 엑셀 파일을 읽어와 병합
    for file in excel_files:
        # 엑셀 파일의 경로
        file_path = os.path.join(folder_path, file)
        # 엑셀 파일 읽기
        temp = load_workbook(file_path)
        df = pd.read_excel(file_path, engine='openpyxl')
        # 읽은 데이터를 빈 DataFrame에 추가
        merged_data = pd.concat([merged_data, df], ignore_index=True)

    # 병합된 데이터를 새로운 엑셀 파일로 저장
    merged_data.to_excel(output_file, index=False)
    print("엑셀 파일이 성공적으로 병합되었습니다.")

# 폴더 경로와 병합된 엑셀 파일의 이름을 지정하여 함수 호출
folder_path = './excels'  # 폴더 경로를 실제 폴더의 경로로 대체
output_file = 'result.xlsx'  # 병합된 엑셀 파일의 이름 지정

merge_excel_files(folder_path, output_file)

코드는 초기에 Path라이브러리로 결합할 excel을 불러올 폴더인 [excels]폴더를 찾아서 없는 경우 생성하고 있다면 파일을 볼러옵니다.

불러온 파일은 pandas 데이터프레임에 저장하고 결합함수를 호출하여 데이터를 모두 결합할 때까지 반복합니다. 완료되면 결합된 데이터프레임을 excel파일로 저장하고 프로그램을 종료합니다.

업무 자동화를 위해 필요한 기능이 있다면 댓글로 알려주세요. 감사합니다.

728x90
반응형

'Programming > 업무자동화' 카테고리의 다른 글

[업무자동화] 워드 표 계산하기  (0) 2024.04.07