Dimora to xlsx (3) | 60歳を迎えて、思うこと。

60歳を迎えて、思うこと。

いつの間にか、「60」という年月が経ちました。
残り少ないか多いか?わかりませんが。
じじぃ~の「ひとりごと」を細々と続けられれば。。。

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を使って「セルの書式設定」や「シートの加工」も可能になります。  
# 試しにこのコードを走らせてみますか?

# ==============================