stmtkブログ

Python中心の技術ブログです。

【Python】ExcelからCSVへ変換する

機能

ExcelからCSVへ変換するPythonプログラムです。

フォルダ内にあるExcelをシートごとにCSVへ変換します。

CSVは「ファイル名_シート名.csv」で作成されます。

実行前

実行後

サンプル動画

youtu.be

プログラム

#! python3
# 機能
#  ExcelからCSVへ変換する
# 使い方
#  1.Pythonを実行する
# 実行コマンド
#  python excel2csv.py 入力フォルダ 出力フォルダ
#  python excel2csv.py input output

import os
import sys
import csv
import openpyxl

# ExcelからCSVへ変換する関数
def excel2csv(input_folder, output_folder):
    os.makedirs(output_folder, exist_ok=True)

    # フォルダ内のExcelを探す
    for excel_file in os.listdir(input_folder):
        if not excel_file.lower().endswith(".xlsx"):
            continue

        print("Converting: " + excel_file + "...")
        wb = openpyxl.load_workbook(os.path.join(input_folder, excel_file))

        # シートごとにCSVを作成する
        for sheet in wb.worksheets:
            file_name = excel_file[:-5] + "_" + sheet.title + ".csv"
            with open(
                os.path.join(output_folder, file_name),
                "w",
                newline="",
                encoding="utf-8",
            ) as csv_file:
                csv_writer = csv.writer(csv_file)

                # シートの1行ごとにCSVへ書き出す
                for row in range(1, sheet.max_row + 1):
                    row_data = []
                    for col in range(1, sheet.max_column + 1):
                        row_data.append(sheet.cell(row=row, column=col).value)
                    csv_writer.writerow(row_data)


if len(sys.argv) != 3:
    sys.exit("使い方:python excel2csv.py 入力フォルダ 出力フォルダ")

excel2csv(sys.argv[1], sys.argv[2])

使い方

  1. Pythonを実行する

実行コマンド

python excel2csv.py 入力フォルダ 出力フォルダ
python excel2csv.py input output

openpyxlをインストールしていない場合は以下のコマンドでインストールして下さい。

pip install openpyxl

参考文献

www.oreilly.co.jp