4
6

More than 3 years have passed since last update.

フォルダ内のすべてのxlsxファイルを、CSVファイルに一括変換する

Posted at

背景・前提・仕様とか

仕事用Excel操作ツール作成用メモ。
これ↓の派生。
フォルダ内のすべてのxlsxファイル名を自然順のリストで取得して、絶対パスを構築する

使い方

  1. デスクトップ上に新しいフォルダを2つ、"folder1", "folder2"という名前で作る。

  2. "folder1"内に、変換したいxlsxのファイルをすべて放り込む。

  3. 動かす。

  4. "folder2"内に、csvファイルに変換されて保存。

実行環境

実行環境と各ライブラリのバージョンは下記の通り。

  • Windows10 pro
  • Python 3.7.3
  • natsort 7.0.1
  • openpyxl 3.0.3

フォルダ内のすべてのxlsxファイルを、CSVファイルに一括変換する。

all_xlsx_to_csv.py
import os
import csv
import openpyxl
from natsort import natsorted


# デスクトップに作った任意のフォルダ名称

folder_name = "folder1"
folder_2_name = "folder2"


# 定数
desktop_path = os.getenv("HOMEDRIVE") + os.getenv("HOMEPATH") + "\\Desktop"
folder_path = os.path.join(desktop_path, folder_name)
folder_2_path = os.path.join(desktop_path, folder_2_name)


# Excelファイル名リストを自然順で取得
files = natsorted(os.listdir(folder_path))

#ファイル名リストをfor文でまわして各ファイルの絶対パスを構築
for filename in files:
    filepath = os.path.join(folder_path, filename)

    # xlsxファイルにアクセス→先頭シートのオブジェクトを取得
    wb = openpyxl.load_workbook(filepath)
    ws_name = wb.sheetnames[0]
    ws = wb[ws_name]

    # csvに変換して、folder2に保存
    savecsv_path = os.path.join(folder_2_path, filename.rstrip(".xlsx")+".csv")
    with open(savecsv_path, 'w', newline="") as csvfile:
        writer = csv.writer(csvfile)
        for row in ws.rows:
            writer.writerow([cell.value for cell in row])

4
6
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
4
6