PythonのopenpyxlでEXCELのシートを操作する方法
PythonのopenpyxlでEXCELファイルのシートを操作する方法を解説します。
この記事で利用するEXCELファイルは以下のような内容でファイル名はtext.xlsxで動作ディレクトリに保存してあります。
シート名のリストを表示
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'] |
で
とシートが追加されています。
また、シートを途中に追加する場合はキーワード引数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'] |
で
と途中にシートが追加されています。
シートのコピー
シートをコピーするにはワークブックオブジェクトの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'] |
で
となります。
シート名は「元のシート名 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を使えばEXCELワークブック内のシートをシート名取得、シート名変更、シート追加、シート削除など簡単に操作することができます。