Python(openpyxl) Excelシート操作まとめ|名前変更・存在チェック・ループ・枚数取得・移動

Python

Python(openpyxl)で、Excelシートの名前変更・存在チェック・ループ・枚数取得など、シート操作の基本コードをまとめました。

ぜひ、お試しください。

シート名を変更 4選

シート名を変更(特定のシート)

以下のコードを実行すると、特定シートの名前を変更します。


import openpyxl

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet2']

#シート名を変更
ws.title = 'シート2'

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート名変更.xlsx')

 
Excelシート内の特定シートの名称を自動変更します。

[ws = wb[‘Sheet2’]] にて、対象シートを指定しています。


 
 

シート名を変更(特定の文字を含むシート)

以下のコードを実行すると、特定文字を含むシートの名前を変更します。


import openpyxl

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')

#ファイル内の全てのシートをループ
for ws in wb.worksheets:
    if '月' in ws.title:
        #シート名を変更
        ws.title = ws.title + '度'

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート名変更.xlsx')

 
Excelシート内で、特定文字を含むシートの名称を自動変更します。

シート名に ”月” を含む場合、シート名の後ろに ”度” を追加します。


 
 

シート名を変更(一番左のシート)

以下のコードを実行すると、一番左側にあるシート名を変更します。


import openpyxl

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb.worksheets[0]

#シート名を変更
ws.title = 'シート1'

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート名変更.xlsx')

 
Excelシート内の一番左にあるシート名を変更します。

[ws = wb.worksheets[0]] は、一番左端のシートを指定しています。


 
 

シート名を変更(一番右のシート)

以下のコードを実行すると、一番右側にあるシート名を変更します。


import openpyxl

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb.worksheets[-1]

#シート名を変更
ws.title = 'シート3'

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート名変更.xlsx')

 
Excelシート内の一番右にあるシート名を変更します。

[ws = wb.worksheets[-1]] は、一番右端のシートを指定しています。


 
 

シートが存在するかチェック

以下のコードを実行すると、Excelシートを1つずつループして、特定シートの存在有無を確認します。


import openpyxl

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
target_name = 'Sheet4'
check = False

#ファイル内の全てのシートをループして検索
for ws in wb.worksheets:

    #指定シートが存在していれば、変数にTrueを格納
    if ws.title == target_name:
        check = True

if check == True:
    print(target_name + 'は存在します')
else:
    print(target_name + 'は存在しません')

 

シートが存在する場合

[check == True] となり、シートが存在しているという判定になります。


 
 

シートが存在しない場合

[check == False] となり、シートが存在しないという判定になります。


 
 

シートを1つずつループ

以下のコードを実行すると、Excelシートを1つずつループします。


import openpyxl

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')

#ファイル内の全てのシートをループ
for ws in wb.worksheets:
    print(ws.title)

 

forループを使用して、すべてのシートをループしました。

シートの一覧を取得することができました。


 
 

シート枚数をカウント

以下のコードを実行すると、エクセルファイル内にシートがいくつあるか調べます。


import openpyxl

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
print(len(wb.worksheets))

 

コード実行後

ワークシートの枚数「3」を表示します。


 
 

非表示シートがある場合のカウント数は?

「表示」「非表示」の両方を合わせたシート枚数「3」を表示します。


 
 

シート移動 5選

シート移動(特定シート)

以下のコードを実行すると、特定のシートを1つ左に移動します。


import openpyxl

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet2']

wb.move_sheet(ws,offset=-1)

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート移動.xlsx')

 

コード実行後

Excelシート内の特定シートの位置を移動します。

[ws = wb[‘Sheet2’]] にて、対象シートを指定します。


 
 

シート移動(先頭を移動)

以下のコードを実行すると、先頭にあるシートを右側へ移動します。


import openpyxl

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb.worksheets[0]

wb.move_sheet(ws,offset=2)

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート移動.xlsx')

 

コード実行後

Excelシート内の先頭にあるシートを2つ右へ移動します。

[ws = wb.worksheets[0]] は、一番左端のシートを指定します。


 
 

シート移動(末尾を移動)

以下のコードを実行すると、末尾にあるシートを左側へ移動します。


import openpyxl

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb.worksheets[-1]

wb.move_sheet(ws,offset=-3)

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート名変更.xlsx')

 

コード実行後

Excelシート内の末尾にあるシート位置を3つ左へ移動します。

[ws = wb.worksheets[-1]] は、一番右端のシートを指定します。


 
 

シート移動(先頭へ移動)

以下のコードを実行すると、特定文字を含むシートを先頭へ移動します。


import openpyxl

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
i = 0

#ファイル内の全てのシートをループ
for ws in wb.worksheets:
    i = i + 1
    if 'まとめ' in ws.title:

        #先頭までの移動シート枚数
        Top_Sheet = i - 1
        #シート移動
        wb.move_sheet(ws,offset=-Top_Sheet)

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート移動.xlsx')

 

コード実行後

Excelシート内で「まとめ」を含むシートを一番左(先頭)に移動します。

シートが全部でいくつあるかわからない場合や、

対象シートの位置が分からない場合でも動作します。


 
 

シート移動(末尾へ移動)

以下のコードを実行すると、指定シートを末尾へ移動します。


import openpyxl

wb = openpyxl.load_workbook('C:/Users/xxx/Desktop/test/test.xlsx')
ws = wb['Sheet2']
i = 0

#ファイル内の全てのシートをループ
for my_ws in wb.worksheets:
    i = i + 1
    if my_ws == ws:
        #対象シートの位置取得
        Target_Sheet = i
    else:
        continue

#シート移動
wb.move_sheet(ws,offset= i - Target_Sheet)

#別名で保存
wb.save('C:/Users/xxx/Desktop/test/testシート移動.xlsx')

 

コード実行後

Excelシート内の特定シートを一番右(末尾)に移動します。

シートが全部でいくつあるかわからない場合や、

対象シートの位置が分からない場合でも動作します。


 
 

この記事がお役に立ちますと幸いです。
 
・【Python】エクセルを自動処理する方法まとめ
 

【Python】エクセル処理を自動化:超便利55選
Pythonで、Excel処理を自動化するコードをご紹介します。ぜひお試しください!

 

「PythonでExcel、メール、Webを自動化する本」

準備に時間をかけず、すぐ始められます
実践的な例題で、実務で本当に使えるプログラムを紹介
自分の仕事を効率化したい方に大きな武器になるオススメの1冊です!