【Python】大量のcsvファイルをExcelの各シートに入れる方法
大量のCSVファイルの処理に困ったことはありませんか?私はあります。
3つくらいのCSVなら適当に手動コピペするのですが、10や20となるとめんどくさいんですよね。
やりたいこと
今回のプログラムでやりたいことはこれだけです。
- フォルダ内にあるすべてのcsvファイルを、1つのエクセルの各シートに入れる
これをやりたい人がどのくらいいるのかはわかりませんが、少なくとも私はたまにやらざるを得ないので、誰かの役に立つといいなと思っています。
準備
プログラム実行前に以下の準備をしておいてください。
コード
import os import glob from pathlib import Path import openpyxl import csv # ファイル指定 file_path ="ファイルパス" csvfiles = glob.glob(file_path+"/csv/*.csv", recursive=False) wb = openpyxl.Workbook() # csvを順次コピー for file in csvfiles: wb.create_sheet(os.path.splitext(os.path.basename(file))[0]) wb.active = wb.sheetnames.index(os.path.splitext(os.path.basename(file))[0]) ws = wb.active with open(file, encoding="shift-jis") as f: reader = csv.reader(f, delimiter=',') for row in reader: row_float = [float(a) for a in reader(1,len(row))] ws.append(row_float) # エクセルとして保存 wb.save(file_path+"/mergecsv.xlsx")
今後
とりあえず1つのエクセルに格納できたので、あとは煮るなり焼くなりします。 この後の処理や計算がいつも同じならそこまでコードに入れてもいいと思います。 私の場合は結構バラバラなのでここまで。 もう少し定型業務が多い職場に移ったら追加するかもしれません。