
openpyxlでシートの操作
Excelのシート操作をプログラムで自動化すると、作業効率が大幅に向上します。
特に、複数のファイルや大量のデータを扱う際に効果的です。
具体的には以下のようなメリットがあります。
- 手作業のミスを減らせる
- 大規模作業を短時間で処理できる
本記事では、openpyxlでシートを操作する方法について解説します!
シート一覧を取得する
openpyxlを使うと、ワークブックに含まれるすべてのシート名を簡単に取得できます。
- シート一覧を取得する
sheet_names = wb.sheetnames print(sheet_names)
sheetnamesはシートの名前が入ったリストを返します。
シートの存在を確認する
不要なエラーを防ぐため、操作の前に「指定したシート名が本当に存在するか」をチェックしましょう。以下は簡単な確認方法です。
- シート名のリストを取得する
all_sheet_names = wb.sheetnames
これで、Excelファイル内のすべてのシート名がリストで得られます。
- チェックしたいシート名が含まれているか確認
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
操作したいシートがアクティブになっている場合は、この方法でも同様にシートを取得可能です。
これらのステップで目的のシートを簡単に参照できます。取得後はセルへの書き込みや読み取りなど、通常の操作を自由に行いましょう。
シートを追加する
新しくシートを作成するときは、以下の手順を参考にしてください。
- シートを追加する
new_sheet = wb.create_sheet("新しいシート")
ここでは「新しいシート」という名前のシートを末尾に作成します。
インデックスを指定すれば、挿入位置も自由にコントロール可能です。
シートをコピーする
openpyxlには、シートを複製するためのメソッドcopy_worksheet()
があります。
- コピー元のシートを取得する
original_sheet = wb["コピー元シート"]
- シートを複製する
copied_sheet = wb.copy_worksheet(original_sheet)
この時点で
copied_sheet
が新しく作成されます。自動的に一意の名前が付けられます。 - シート名を変更する
copied_sheet.title = "複製したシート名"
お好みの名前にリネームできます。
シートを移動する
openpyxlで既存のシートの順序を変えたい場合は、move_sheet()
を使ってシートの位置を調整できます。
- 移動させたいシートを取得する
target_sheet = wb["移動したいシート"]
ここでは「移動したいシート」という名前のシートを取得しています。
- シートを移動する
# シートの位置を1つ後ろにずらす場合(オフセットを+1) wb.move_sheet(target_sheet, offset=1) # 1つ前に移動させるなら offset=-1
offset
に正の値を指定すると後ろへ、負の値を指定すると前へ移動します。
シートを並び替える
openpyxlには、複数のシートを一括でソートする専用メソッドはありませんが、シートの順番を調整する方法はいくつかあります。
代表的な例として、move_sheet()
を使ってシートを手動で並び替える手順を紹介します。
- 移動したいシートを取得する
target_sheet = wb["移動したいシート"]
- move_sheet()でシートを移動する
# 1つ後ろにシートを移動 wb.move_sheet(target_sheet, offset=1)
offset
の値を増減させて、シートを前後に動かします。
以上の手順で、シートの順序を好みの順番に整理できます。
シートの数を確認する
openpyxlを使えば、ワークブックに含まれているシートが何枚あるのか簡単にチェックできます。
- シート名のリストを取得する
sheet_names = wb.sheetnames
これで、Excelファイル内のすべてのシート名がリストとして取り出せます。
- シート数を調べる
num_sheets = len(sheet_names) print(f"シートの総数: {num_sheets}")
返される値は、現在のワークブックに存在するシートの枚数です。
シートを削除する
不要なシートを安全に削除したい場合、以下の手順で行います。
- 削除対象のシートを取得する
sheet_to_delete = wb["不要なシート"]
- シートを削除する
wb.remove(sheet_to_delete)
これだけで、指定したシートは削除されます。
公式ドキュメント
関連記事

コメント