LoginSignup
0
0

Excelファイルの各シートをまとめてCSV変換するPythonコード

Posted at

概要

Excelファイルを一括txt化するPythonを作成したので、備忘録としておいておきます。
これはWSL2で使用したものです。

path: 下のフォルダを格納するフォルダまでのパス
folder_source: excelファイル格納フォルダ名
folder_result: 出力先フォルダ名
excelToCsv.py
import os
from natsort import natsorted
import pandas as pd
import warnings

#ディレクトリ名
folder_source = "source"
folder_result = "result"
#パス
path = "/home/user/code/python/"

def main():
    folder_source_path = os.path.join(path, folder_source)
    folder_result_path = os.path.join(path, folder_result)

    #excelファイルリストを生成
    files = natsorted(os.listdir(folder_source_path))

    #入力規則が保存できない警告が出るが、xlsxで保存しないため無視する
    warnings.filterwarnings('ignore', category=UserWarning)

    #ファイルリスト
    for filename in files:
        filepath = os.path.join(folder_source_path, filename)
        sheet_names = pd.ExcelFile(filepath).sheet_names
        #各シート
        for sheet_name in sheet_names:
            data = pd.read_excel(filepath, sheet_name, index_col=None)
            output_file_name = sanitize_filename(filename + "_" + sheet_name + ".txt")
            #出力
            data.to_csv(os.path.join(folder_result_path, output_file_name), encoding="UTF-8", index=False)

        #コンソールに経過を出力
        print("{:>2}".format(len(sheet_names)) + ": " + filename)
    print("Finish!")


#ファイル名に使用できないシート名を置換
def sanitize_filename(filename):
    #ファイルパスに使用できない文字リスト
    invalid_chars = [":", "/", "\\", "*", "?", "\"", "<", ">", "|"]
    for char in invalid_chars
        filename = filename.replace(char, "_")
    return filename


if __name__ == "__main__":
    main()

終わりに

複数のExcelファイルを検索するなら、txt化してからGrep検索が基本ですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0