【完全ガイド】Python+openpyxlでExcelのシート操作を解説シート操作②

openpyxlでシートの操作

Excelのシート操作をプログラムで自動化すると、作業効率が大幅に向上します。
特に、複数のファイルや大量のデータを扱う際に効果的です。
具体的には以下のようなメリットがあります。

  • 手作業のミスを減らせる
  • 大規模作業を短時間で処理できる

本記事では、openpyxlでシートを操作する方法について解説します!


シートを指定する

Excelファイルの中で特定のシートを選択して操作するには、以下の流れを参考にしてみてください。

  1. シートを指定して取得する
    ws = wb["シート名"]

シート名を取得する

Excelファイルに含まれるシートの名前を調べたい場合、以下の手順で簡単に確認できます。

  1. シート名の一覧を取得する
    sheet_names = wb.sheetnames
    print(sheet_names)

    wb.sheetnamesは、ワークブック内のシート名をリスト形式で返します。


シート名を変更する

既存のシートの名前を変えたい場合、以下の流れで簡単に行えます。

  1. 変更対象のシートを取得
    ws = wb["旧シート名"]
  2. シート名を変更する
    ws.title = "新しいシート名"

    この一行で、シート名をお好みのものに設定できます。
    ファイルを再度保存すれば、シート名の変更が反映されます。


シートをアクティブにする

Excelを開いたときに最初に表示されるシートを指定するには、下記のような手順で操作できます。

  1. アクティブにしたいシートのインデックスを指定
    # 例えば2番目のシートをアクティブにする場合
    wb.active = 1 # 先頭シートが0、2番目が1という形で数えます

    この設定で、Excelを開いた際に2番目のシートが表示されるようになります。

インデックスは0から始まるので注意しましょう。


シートをクリアする

既存のシートからデータだけを消したい場合は、以下のような方法で対応できます。

  1. クリアしたいシートを取得する
    ws = wb["クリア対象シート"]
  2. シート内のセルを削除または空にする
    たとえばシートすべてをクリアするには以下の方法があります。
    • 行と列ごと削除する
    • ループで全セルを空にする
    # (例)全行と全列を順次削除する方法
    # 1行目から最終行まで削除
    ws.delete_rows(1, ws.max_row)
    # 必要に応じて、全列も削除 # ws.delete_cols(1, ws.max_column)

    または全セルを空にする場合:

    for row in ws.iter_rows():
        for cell in row:
            cell.value = None

    これでシートの内容がクリアされた状態が反映されます。

以上で、シートの中身をきれいにリセットできます。行や列の削除とセルのクリアはやり方が異なるので、必要に応じて使い分けてください。


シートを非表示にする

あるシートを見えない状態にしておきたいときは、以下の手順で簡単に実行できます。

  1. 非表示にしたいシートを取得する
    ws = wb["非表示にしたいシート"]

    「非表示にしたいシート」の部分を実際のシート名に変えてください。

  2. シートの表示状態を”hidden”にする
    ws.sheet_state = "hidden"

    これでExcel上ではシートタブが表示されなくなります。

以上の手順で、簡単にシートを非表示にできます。
再表示する場合は、ws.sheet_state = “visible”に戻して同様に保存してください。

公式ドキュメント

openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files — openpyxl 3.1.3 documentation

関連記事

【完全ガイド】Python+openpyxlでExcelのシート操作を解説➀
openpyxlでシートの操作Excelのシート操作をプログラムで自動化すると、作業効率が大幅に向上します。特に、複数のファイルや大量のデータを扱う際に効果的です。具体的には以下のようなメリットがあります。手作業のミスを減らせる大規模作業を...

コメント

タイトルとURLをコピーしました