Excel Pythonツール

Pythonでフォルダ内のCSVを1つのExcelにまとめる

概要

Pythonを活用して、複数のCSVファイルを1つのExcelファイルに簡単に統合する方法を紹介します。この記事では、フォルダ内のすべてのCSVファイルを自動的に検索し、それぞれのファイルをExcelの異なるシートにまとめるPythonスクリプトについて説明します。このミニプログラムは、日々の業務で多くのデータファイルを扱うビジネスプロフェッショナル、研究者、または学生に特に便利です。

使用例

  • CSVファイルでダウンロードしたクレジットカードの月別ファイルを1つに統合し、1つのファイルで管理できるようにする。
  • 分析機器から集めた分析データのCSVファイルを統合し、解析を楽にする。

必要なPythonライブラリ

  • pandas: データ分析と操作を容易にするためのライブラリです。CSVファイルの読み込み、データフレームの操作、およびExcelファイルへの書き出しに使用します。
  • openpyxl: pandasと連携してExcelファイルを読み書きするためのライブラリです。特に.xlsxフォーマットのファイルを扱う際に必要です。

これらのライブラリをインストールするには、コマンドプロンプトやWindows PowerShellで次のコマンドを使います:

pip install pandas openpyxl

使用手順

  1. プログラムの実行:python プログラムを実行します。
  2. フォルダの選択: ダイアログが表示され、CSVファイルが保存されているフォルダを選択します。
  3. ファイル保存の選択: ダイアログが表示され、結合されたデータを保存するExcelファイルの名前と場所を指定します。
  4. 自動統合: 選択されたフォルダ内のすべてのCSVファイルを読み込み、指定したExcelファイルにそれぞれ異なるシートとして保存します。

プログラム

下記のコードをメモ帳などに丸々コピーしてpythonファイル(〇〇.py)にしてください。

import os
import pandas as pd
from tkinter import Tk, filedialog

def select_folder():
    """フォルダ選択ダイアログを表示し、選択されたフォルダのパスを返す"""
    root = Tk()
    root.withdraw()  # Tkのルートウィンドウを非表示にする
    folder_selected = filedialog.askdirectory()
    root.destroy()
    return folder_selected

def select_save_file():
    """ファイル保存ダイアログを表示し、保存先のファイルパスを返す"""
    root = Tk()
    root.withdraw()  # Tkのルートウィンドウを非表示にする
    file_path = filedialog.asksaveasfilename(defaultextension='.xlsx', filetypes=[('Excel Files', '*.xlsx')])
    root.destroy()
    return file_path

def merge_csv_to_excel(folder_path, output_file):
    """指定されたフォルダ内の全CSVファイルを読み込み、1つのExcelファイルに結合して保存する"""
    csv_files = [f for f in os.listdir(folder_path) if f.endswith('.csv')]
    writer = pd.ExcelWriter(output_file, engine='openpyxl')
    
    for file in csv_files:
        try:
            df = pd.read_csv(os.path.join(folder_path, file), encoding='utf-8')
        except UnicodeDecodeError:
            try:
                df = pd.read_csv(os.path.join(folder_path, file), encoding='cp932')  # 日本語のエンコーディングを試す
            except UnicodeDecodeError:
                continue  # 他のエンコーディングでも読み込めなかった場合、そのファイルをスキップ
        df.to_excel(writer, sheet_name=os.path.splitext(file)[0], index=False)
    
    writer.save()
    print(f"All CSV files have been merged into {output_file}")

# ユーザーにフォルダとファイルの場所を選択させる
input_folder = select_folder()
if input_folder:
    output_file_path = select_save_file()
    if output_file_path:
        merge_csv_to_excel(input_folder, output_file_path)
    else:
        print("File save operation was cancelled.")
else:
    print("Folder selection was cancelled.")

あるいは、下のテキストファイルをダウンロードし、「.txt」を「.py」に変えることでそのまま使えます。

まとめ

このPythonミニプログラムは、複数のCSVファイルを簡単かつ迅速にExcelファイルに変換するための効率的なソリューションを提供します。GUIを利用した簡単な操作で、エンコーディングの問題にも対応しつつ、作業の自動化と時間節約を実現します。データ処理の時間を大幅に削減し、より重要な分析作業に集中できるようになります。このプログラムを活用して、日々のデータ管理をスマートに行いましょう。

-Excel, Pythonツール
-, ,