PythonのopenpyxlでEXCELのシートを操作する方法

PythonPythonモジュール,openpyxlモジュール

記事内に広告が含まれています。

PythonのopenpyxlでEXCELファイルのシートを操作する方法を解説します。

この記事で利用するEXCELファイルは以下のような内容でファイル名はtext.xlsxで動作ディレクトリに保存してあります。
openpyxlで利用するEXCELファイル

シート名のリストを表示

EXCELファイルにあるシート名をリストとして取得します。

01
02
03
04
05
06
import openpyxl
 
wb = openpyxl.load_workbook( "text.xlsx" )
 
#シート名のリストを表示
print( wb.sheetnames )

実行結果は

01
['Sheet1', 'Sheet2', 'Sheet3']

になります。

シート名を指定してシート取得

シート名を指定してシートオブジェクトを取得する方法は以下のようになります。

01
02
03
04
05
06
07
import openpyxl
 
wb = openpyxl.load_workbook( "text.xlsx" )
 
#シート名を指定して取得
ws = wb[ "Sheet1" ]
print( ws )

上記の実行結果は

01
<Worksheet "Sheet1">

と正常にシートオブジェクトが取得されています。

インデックス番号を指定してシート取得

インデックス番号を指定してシートオブジェクトを取得する方法は以下のようになります。

01
02
03
04
05
06
07
import openpyxl
 
wb = openpyxl.load_workbook( "text.xlsx" )
 
#インデックス番号を指定してシート取得(注意:インデックス番号は0から始まる)
ws = wb.worksheets[ 0 ]
print( ws )

上記の実行結果は

01
<Worksheet "Sheet1">

と正常にシートオブジェクトが取得されています。

シート名の取得

シートオブジェクトからシート名を取得するにはtitleプロパティを参照します。

01
02
03
04
05
06
07
08
09
import openpyxl
 
wb = openpyxl.load_workbook( "text.xlsx" )
 
# インデックス番号を指定してシート(注意:インデックス番号は0から始まる)
ws = wb.worksheets[ 0 ]
 
# シート名の確認
print( ws.title )

上記の実行結果は

01
Sheet1

と正常にシート名が取得されています。

シート名の変更変更

シート名を変更するにはtitleプロパティに新しいシート名を設定します。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
import openpyxl
 
wb = openpyxl.load_workbook( "text.xlsx" )
 
#シート名のリストを表示
print( wb.sheetnames )
 
# インデックス番号を指定してシート(注意:インデックス番号は0から始まる)
ws = wb.worksheets[ 1 ]
 
# シート名の確認
print( ws.title )
 
# シート名の変更
ws.title = "New Sheet Name"
 
# シート名の確認
print( wb.sheetnames )

上記の実行結果は

01
02
03
['Sheet1', 'Sheet2', 'Sheet3']
Sheet2
['Sheet1', 'New Sheet Name', 'Sheet3']

となり2番目のシート名Sheet2からNew Sheet Nameに変更されています。

ワークシートの追加

シートを新規に追加するにはワークブックオブジェクトのcreate_sheetメソッドを利用します。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
import openpyxl
 
wb = openpyxl.load_workbook( "text.xlsx" )
 
#シート名のリストを表示
print( wb.sheetnames )
 
#シートを最後に追加する
wb.create_sheet( title="Sheet4" )
 
#シート名の確認
print( wb.sheetnames )
 
#ワークブックを上書き保存
wb.save( "text.xlsx" )

上記の実行結果は

01
02
['Sheet1', 'Sheet2', 'Sheet3']
['Sheet1', 'Sheet2', 'Sheet3', 'Sheet4']


Pythonのopenpyxlでシート追加結果
とシートが追加されています。

また、シートを途中に追加する場合はキーワード引数indexを指定して追加します。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
import openpyxl
 
wb = openpyxl.load_workbook( "text.xlsx" )
 
#シート名のリストを表示
print( wb.sheetnames )
 
#シートを最後に追加する
wb.create_sheet( title="Sheet4", index=2 )
 
#シート名の確認
print( wb.sheetnames )
 
#ワークブックを上書き保存
wb.save( "text.xlsx" )

上記の実行結果は

01
02
['Sheet1', 'Sheet2', 'Sheet3']
['Sheet1', 'Sheet2', 'Sheet4', 'Sheet3']


Pythonのopenpyxlで途中にシートを追加した結果
と途中にシートが追加されています。

シートのコピー

シートをコピーするにはワークブックオブジェクトのcopy_worksheetメソッドを利用します。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
import openpyxl
 
wb = openpyxl.load_workbook( "text.xlsx" )
 
#シート名のリストを表示
print( wb.sheetnames )
 
#シートを最後に追加する
wb.copy_worksheet( wb[ "Sheet1" ] )
 
#シート名の確認
print( wb.sheetnames )
 
#ワークブックを上書き保存
wb.save( "text.xlsx" )

上記の実行結果は

01
02
['Sheet1', 'Sheet2', 'Sheet3']
['Sheet1', 'Sheet2', 'Sheet3', 'Sheet1 Copy']


Pythonのopenpyxlでシートをコピーした結果
となります。

シート名は「元のシート名 Copy」になります。

シートの削除

シートを削除するにはワークブックオブジェクトのremoveメソッドを利用します。

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
import openpyxl
 
wb = openpyxl.load_workbook( "text.xlsx" )
 
#シート名のリストを表示
print( wb.sheetnames )
 
#シートを最後に追加する
wb.remove( wb[ "Sheet2" ] )
 
#シート名の確認
print( wb.sheetnames )
 
#ワークブックを上書き保存
wb.save( "text.xlsx" )

上記の実行結果は

01
02
['Sheet1', 'Sheet2', 'Sheet3']
['Sheet1', 'Sheet3']


Pythonのopenpyxlでシートを削除した結果
とシートが削除されています。

まとめ

Pythonのopenpyxlを使えばEXCELワークブック内のシートをシート名取得、シート名変更、シート追加、シート削除など簡単に操作することができます。

0
システムトラストでは一緒に働いていただける仲間を募集中です。
株式会社システムトラスト

システムトラストでは、システムエンジニア、プログラマーなどを随時募集中です。気軽にご相談ください。

お問合せ