Python 複数のcsvをひとつのExcelファイルへ、各シートにて作成する「openpyxl」

 本記事では、雛形コードを載せました。カレントフォルダ以下の全てのサブフォルダを探索し、拡張子「.csv」を検出してファイルパスをリストで取得します。そして、各ファイル名をシート名として、ひとつのエクセルファイル「.xlsx」へ保存します。
 下図は、その実施例でシートが3つあります。これはカレントフォルダ以下に3つのcsvファイルがあったためです。

f:id:HK29:20210411224933p:plain

■本プログラム

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, re
import openpyxl
import pandas as pd

def main():
    # カレントフォルダ以下の全てのcsvファイルのパスを取得する
    path_list = []
    for dirpath, dirnames, filenames in os.walk(os.getcwd()):
        for filename in filenames:
            if re.search(".csv", filename):
                mypath = [dirpath, filename]
                path_list.append(os.path.join(*mypath))

    # ひとつのエクセルファイルに、各csvファイルを各シートにて保存する
    EXL = pd.ExcelWriter(out_file, engine='openpyxl')
    for file_path in path_list:
        sheet = pd.read_csv(file_path)
        sheet.to_excel(EXL,
                       sheet_name=os.path.splitext(os.path.basename(file_path))[0],
                       index = False)
    EXL.save()


if __name__ == '__main__':
    # 出力するExcelファイル名
    out_file = 'all_csv.xlsx'
    
    main()

以上

<広告>