背景・前提・仕様とか
仕事用Excel操作ツール作成用メモ。
これ↓の派生。
フォルダ内のすべてのxlsxファイル名を自然順のリストで取得して、絶対パスを構築する
使い方
-
デスクトップ上に新しいフォルダを2つ、"folder1", "folder2"という名前で作る。
-
"folder1"内に、変換したいxlsxのファイルをすべて放り込む。
-
動かす。
-
"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])