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

openpyxlでシートの操作

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

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

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


シート一覧を取得する

openpyxlを使うと、ワークブックに含まれるすべてのシート名を簡単に取得できます。

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

    sheetnamesはシートの名前が入ったリストを返します。


シートの存在を確認する

不要なエラーを防ぐため、操作の前に「指定したシート名が本当に存在するか」をチェックしましょう。以下は簡単な確認方法です。

  1. シート名のリストを取得する
    all_sheet_names = wb.sheetnames

    これで、Excelファイル内のすべてのシート名がリストで得られます。

  2. チェックしたいシート名が含まれているか確認
    sheet_to_check = "対象シート"
    if sheet_to_check in all_sheet_names:
        print(f"{sheet_to_check} は存在します。")

何らかの編集や削除を行う前に、このチェックを入れておくと安全です。


シートを取得する

Excelファイル内の特定のシートを取得する方法はとても簡単です。

  • 指定したシートを取得する
    # シート名を使ってWorksheetオブジェクトを取得
    ws = wb["シート名"]

    シートの取得方法は、シート名で指定、インデックスで指定の2つの方法があります。

  • アクティブシートを取得する
    # 現在アクティブなシートを取得
    active_ws = wb.active

    操作したいシートがアクティブになっている場合は、この方法でも同様にシートを取得可能です。

これらのステップで目的のシートを簡単に参照できます。取得後はセルへの書き込みや読み取りなど、通常の操作を自由に行いましょう。


シートを追加する

新しくシートを作成するときは、以下の手順を参考にしてください。

  1. シートを追加する
    new_sheet = wb.create_sheet("新しいシート")

    ここでは「新しいシート」という名前のシートを末尾に作成します。
    インデックスを指定すれば、挿入位置も自由にコントロール可能です。


シートをコピーする

openpyxlには、シートを複製するためのメソッドcopy_worksheet()があります。

  1. コピー元のシートを取得する
    original_sheet = wb["コピー元シート"]
  2. シートを複製する
    copied_sheet = wb.copy_worksheet(original_sheet)

    この時点でcopied_sheetが新しく作成されます。自動的に一意の名前が付けられます。

  3. シート名を変更する
    copied_sheet.title = "複製したシート名"

    お好みの名前にリネームできます。


シートを移動する

openpyxlで既存のシートの順序を変えたい場合は、move_sheet()を使ってシートの位置を調整できます。

  1. 移動させたいシートを取得する
    target_sheet = wb["移動したいシート"]

    ここでは「移動したいシート」という名前のシートを取得しています。

  2. シートを移動する
    # シートの位置を1つ後ろにずらす場合(オフセットを+1)
    wb.move_sheet(target_sheet, offset=1)
    
    # 1つ前に移動させるなら offset=-1

    offset正の値を指定すると後ろへ、負の値を指定すると前へ移動します。


シートを並び替える

openpyxlには、複数のシートを一括でソートする専用メソッドはありませんが、シートの順番を調整する方法はいくつかあります。
代表的な例として、move_sheet()を使ってシートを手動で並び替える手順を紹介します。

  1. 移動したいシートを取得する
    target_sheet = wb["移動したいシート"]
  2. move_sheet()でシートを移動する
    # 1つ後ろにシートを移動
    wb.move_sheet(target_sheet, offset=1)

    offsetの値を増減させて、シートを前後に動かします。

以上の手順で、シートの順序を好みの順番に整理できます。


シートの数を確認する

openpyxlを使えば、ワークブックに含まれているシートが何枚あるのか簡単にチェックできます。

  1. シート名のリストを取得する
    sheet_names = wb.sheetnames

    これで、Excelファイル内のすべてのシート名がリストとして取り出せます。

  2. シート数を調べる
    num_sheets = len(sheet_names)
    print(f"シートの総数: {num_sheets}")

    返される値は、現在のワークブックに存在するシートの枚数です。


シートを削除する

不要なシートを安全に削除したい場合、以下の手順で行います。

  1. 削除対象のシートを取得する
    sheet_to_delete = wb["不要なシート"]
  2. シートを削除する
    wb.remove(sheet_to_delete)

これだけで、指定したシートは削除されます。

公式ドキュメント

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

関連記事

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

コメント

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