【Python×Excel】複数のCSVファイルを読み込み、1つのExcelにまとめる方法

Python

 

日常業務でよく使われる「CSVファイル」ですが、
月ごとや部署ごとにファイルが分かれていて、いちいち手動でまとめるのが面倒…ということはありませんか?

そんなときに便利なのがPythonの自動化処理です。
Pythonを使えば、複数のCSVファイルを一括で読み込み、1つのExcelファイルにシートごとにまとめることができます。

今回はその具体的な方法をご紹介します。




⬛︎こんなことができるようになる!

・複数のCSVファイルを自動で読み込める
・1つのExcelファイルにシートごとに保存できる
・毎月・毎週の手作業をゼロにできる

⬛︎準備するもの

今回使うPythonライブラリは以下の2つです。

pip install pandas openpyxl
  • pandas:CSVやExcelの読み書きに便利なデータ分析ライブラリ
  • openpyxl:Excel(.xlsx形式)を扱うためのライブラリ

これだけで準備は完了です!

⬛︎やりたいことの流れ

今回は、たとえば「月ごとの売上CSVファイル」があると仮定します。

data/
├── january.csv
├── february.csv
├── march.csv

これらを読み込んで、
各CSVをシート名にして1つのExcelファイル summary.xlsx にまとめていきます。

⬛︎Pythonコード全体

import pandas as pd
import glob

# CSVファイルのあるフォルダを指定
csv_files = glob.glob("data/*.csv")

# ExcelWriterで出力先ファイルを指定
with pd.ExcelWriter("summary.xlsx", engine="openpyxl") as writer:
    for csv_file in csv_files:
        # ファイル名から拡張子を除いたシート名を作成
        sheet_name = csv_file.split("/")[-1].replace(".csv", "")
        
        # CSVをDataFrameとして読み込む
        df = pd.read_csv(csv_file)
        
        # Excelのシートに書き出す
        df.to_excel(writer, sheet_name=sheet_name, index=False)

print("Excelファイル summary.xlsx を作成しました。")

⬛︎コードのポイント解説

glob.glob():フォルダ内のCSVファイルをすべて取得
pd.read_csv():CSVを読み込んでDataFrameに変換
ExcelWriter:複数シートのExcelファイルをまとめて出力するためのツール
df.to_excel():各CSVを個別のシートとして保存

⬛︎応用:ファイル名に日本語を含む場合や、シート名が長い場合

Excelのシート名には31文字までという制限があります。
ファイル名が長い場合や日本語を含む場合は、以下のように処理できます。

import os

sheet_name = os.path.splitext(os.path.basename(csv_file))[0]
sheet_name = sheet_name[:31]  # 最大31文字に制限

⬛︎まとめ:手作業を減らし、自動でExcelへ統合!

この方法を使えば、何十個のCSVファイルでも、ボタンひとつで1つの見やすいExcelファイルにまとめることができます。

■こんなときに使える!

  • 月ごとの売上や在庫データの集計
  • 支店・部署別のレポート集約
  • CSV形式で出力されるツールのデータ取り込み