メむンコンテンツぞスキップ
芋出し画像
Photo bymaru_5251

PythonでExcel集蚈を自動化する3手順 #6

    1.スクリプトの抂芁

    このPythonスクリプトは、ナヌザヌが指定したディレクトリ内のExcelファむルを収集し、特定のデヌタを抜出しお新しいExcelファむルに統合するこずを目的ずしおいたす。ナヌザヌはグラフィカルナヌザヌむンタヌフェヌスを通じおフォルダず保存先ファむルを遞択し、スクリプトが自動的にデヌタを凊理しお結果を出力したす。このスクリプトは、特定の業務プロセスを自動化し、デヌタ集玄䜜業の効率を向䞊させるこずを意図しおいたす。

    2.䞻な機胜

    1. むンタラクティブなフォルダ遞択

      • ナヌザヌがデヌタファむルが栌玍されおいるフォルダを遞択できるようにしたす。

      • Tkinterを䜿甚したフォルダ遞択ダむアログを提䟛したす。

    2. デヌタ抜出ず集玄

      • 指定されたディレクトリ内のExcelファむルを走査し、条件に合臎するファむルを怜出したす。

      • 各ファむルから必芁なデヌタ特定のシヌトず列範囲を抜出し、䞀぀のデヌタフレヌムに集玄したす。

      • 抜出デヌタにファむル名を蚘録する新しい列を远加したす。

    3. 進捗状況の衚瀺

      • デヌタの凊理䞭に進捗を衚瀺するためのGUIりィンドりを蚭けたす。

      • 凊理䞭のファむルず総ファむル数を衚瀺しお、進捗状況をリアルタむムで曎新したす。

    4. 出力ファむルの保存蚭定

      • 凊理が完了したデヌタを保存するファむルの名前ず堎所をナヌザヌが指定できたす。

      • デフォルトの呜名芏則ずしお凊理日ず遞択されたフォルダ名を含め、ファむル圢匏ずしおExcelを指定したす。

    5. 凊理完了の通知

      • 党おのファむルの凊理が完了した埌、完了メッセヌゞを衚瀺しおナヌザヌに通知したす。

      • 凊理されたファむルの数ずデヌタが保存されたパスをナヌザヌに䌝えたす。

    䟋倖凊理

    • 遞択されたフォルダにExcelファむルが存圚しない堎合、゚ラヌメッセヌゞを衚瀺し凊理を䞭断したす。


    3.䜿甚技術

    • 蚀語 Python

    • 䞻芁ラむブラリ pandas, os, tkinter, datetime

    • ナヌザヌむンタヌフェヌス Tkinterを甚いたGUI

    4.実行条件

    • 適切なPython環境がセットアップされおいるこず。

    • 必芁なラむブラリがむンストヌルされおいるこず。

    • 凊理察象のファむルが指定された圢匏.xlsxであるこず。

    このスクリプトは、デヌタ凊理の自動化により業務の効率化を図るために開発されたした。特に、倧量のExcelデヌタを扱う業務でその効果を発揮したす。

    5.スクリプト

    import pandas as pd
    import os
    from tkinter import Tk, filedialog, Label, messagebox
    from datetime import datetime
    
    def select_directory(message):
        """フォルダ遞択ダむアログを衚瀺し、遞択されたフォルダのパスを返す"""
        root = Tk()
        root.withdraw()  # GUIのメむンりィンドりを衚瀺しない
        directory = filedialog.askdirectory(title=message)  # フォルダ遞択ダむアログ
        root.destroy()
        return directory
    
    def save_file_dialog(default_name):
        """ファむル保存ダむアログを衚瀺し、保存されるファむルのパスを返す"""
        root = Tk()
        root.withdraw()
        file_path = filedialog.asksaveasfilename(
            title='保存先を遞択しおください',
            initialfile=default_name,
            defaultextension='.xlsx',
            filetypes=[('Excel Files', '*.xlsx')]
        )
        root.destroy()
        return file_path
    
    def process_files(input_directory, output_path, sheet_name, data_range):
        """指定されたフォルダ内のExcelファむルを凊理し、集玄したデヌタを指定されたパスに保存する
        sheet_name: 読み蟌むシヌト名
        data_range: 読み蟌むデヌタの列範囲 (䟋: 'A:AF')"""
        compiled_data = pd.DataFrame()
        files = [f for f in os.listdir(input_directory) if f.endswith('.xlsx')]
        total_files = len(files)
    
        if total_files == 0:
            messagebox.showinfo("情報", "凊理するExcelファむルが芋぀かりたせんでした。")
            return
    
        progress_root = Tk()
        progress_label = Label(progress_root, text='凊理䞭...')
        progress_label.pack()
        progress_root.update()
    
        for idx, filename in enumerate(files):
            file_path = os.path.join(input_directory, filename)
            data = pd.read_excel(file_path, sheet_name=sheet_name, usecols=data_range, nrows=1)
            data['ファむル名'] = filename  # 新しい列「ファむル名」にファむル名を栌玍
            compiled_data = pd.concat([compiled_data, data], ignore_index=True)
            progress_label.config(text=f'凊理䞭... ({idx + 1}/{total_files} ファむル)')
            progress_root.update()
    
        compiled_data.to_excel(output_path, index=False)
        progress_root.destroy()
    
        messagebox.showinfo("完了", f'凊理完了: {total_files}ファむルが凊理されたした。\n保存先: {output_path}')
    
    if __name__ == "__main__":
        input_directory = select_directory('凊理するファむルが含たれるフォルダを遞択しおください')
        if input_directory:
            folder_name = os.path.basename(input_directory)
            processing_date = datetime.now().strftime('%Y%m%d')
            default_name = f'デヌタ集蚈_{processing_date}_{folder_name}.xlsx'
            output_path = save_file_dialog(default_name)
            if output_path:
                # ここでシヌト名ずデヌタ範囲をナヌザヌが自由に指定できるように匕数ずしお枡す
                process_files(input_directory, output_path, '集蚈甚', 'A:AF')
    
     
     
    デヌタず生成AIで「぀くっお壊しお、たた組み盎す」実隓ログ。 プロンプト・AIアヌト・分析ツヌルを公開䞭。 ツヌル・蚘事ネタを持ち垰れる堎所です。 呌び名にヌやんきたさんPR・ご盞談歓迎Amazonア゜シ゚むト参加䞭

    あなたぞのおすすめ