Dimora to xlsx (3)
ぶるれこ様の
データを
なるべく
手間を かけないで!
xlsxで 読み込めるようにする
以前も 作ったけど・・・
ぜんめんりにゅ~ある である
製作:Microsoft Copilot様
OnLineBackUp で ありんす♪
# ==== csv to pandas to xlsx 変!
# 2. 「録画先」列をチェックして **本体** と **USB-HDD** に分ける
# 3. それぞれを Excel (`.xlsx`) に出力
# - 本体 → `recList-本体.xlsx`
# - USB-HDD → `recList-USB.xlsx`
# 4. タイトル行(カラム名)は両方のファイルに必ず含める
# 5. 出力形式は UTF-8 → Excel形式(openpyxlで後処理可能)
## 📂 完成版コード例:`3-reclist_pandas_xlsx.py`
import pandas as pd
import os
# === 定数 ===
BASE_DIR = r"F:\_pypy\DIGA\COPY"
INPUT_FILE = os.path.join(BASE_DIR, "recList.csv")
OUTPUT_FILE_MAIN = os.path.join(BASE_DIR, "recList-本体.xlsx")
OUTPUT_FILE_USB = os.path.join(BASE_DIR, "recList-USB.xlsx")
def split_and_export(input_file, output_main, output_usb):
try:
# CSV読み込み(カラム行あり)
df = pd.read_csv(input_file, encoding="utf-8")
# ==== ここから
# 列の削除: 複数列を削除する場合は drop を使用
df = df.drop(columns=["DMR-", "視聴/未"])
# 列の挿入: insert を使う(位置を指定して1列ずつ)
# 例: 先頭に「行」列を追加(値は空文字)
df.insert(0, "行", "")
df.insert(1, "頁", "")
df.insert(2, "時間", "")
df.insert(3, "ももんが", "")
# 列の並べ替え: DataFrame の列をリストで再指定
df = df[[
"□放送開始日時□",
"□放送局□",
"☆番組タイトル☆",
"行", "頁", "分", "時間", "MODE", "ジャンル", "録画先"
]]
# ==== ここまで
# 「録画先」が本体の行を抽出
df_main = df[df["録画先"] == "本体"].copy()
# 連番付与(1から開始)
df_main["行"] = range(1, len(df_main) + 1)
# 「頁」列を数値形式で 1 で埋める
df_main["頁"] = 1
# 「録画先」がUSB-HDDの行を抽出
df_usb = df[df["録画先"] == "USB-HDD"].copy()
# 連番付与(1から開始)
df_usb["行"] = range(1, len(df_usb) + 1)
# 「頁」列を数値形式で 1 で埋める
df_usb["頁"] = 1
# 列の並べ替え(存在する列だけを安全に並べ替え)
desired_cols = [
"□放送開始日時□",
"□放送局□",
"☆番組タイトル☆",
"行", "頁", "時間", "MODE", "ジャンル", "分", "録画先"
]
df_main = df_main[[c for c in desired_cols if c in df_main.columns]]
df_usb = df_usb [[c for c in desired_cols if c in df_usb.columns]]
# Excel出力(タイトル行=カラム名を含む)
if not df_main.empty:
df_main.to_excel(output_main, index=False, engine="openpyxl")
print(f"出力完了: {output_main}")
else:
print("本体データがありません")
if not df_usb.empty:
df_usb.to_excel(output_usb, index=False, engine="openpyxl")
print(f"出力完了: {output_usb}")
else:
print("USB-HDDデータがありません")
except FileNotFoundError:
print(f"入力ファイルが見つかりません: {input_file}")
except Exception as e:
print(f"エラー発生: {e}")
if __name__ == "__main__":
split_and_export(INPUT_FILE, OUTPUT_FILE_MAIN, OUTPUT_FILE_USB)
## ✅ このスクリプトの動き
# - `recList.csv` を pandas で読み込む
# - 「録画先」列を基準にフィルタリング
# - 本体用とUSB用に分けて `.xlsx` 出力
# - 出力ファイルには必ずカラム行(タイトル行)が含まれる
# これで **第三弾の仕様**は完成です!
# 👉 次のステップでは、openpyxlを使って「セルの書式設定」や「シートの加工」も可能になります。
# 試しにこのコードを走らせてみますか?
# ==============================