PythonのopenpyxlでEXCELのシートを操作する方法
PythonのopenpyxlでEXCELファイルのシートを操作する方法を解説します。
この記事で利用するEXCELファイルは以下のような内容でファイル名はtext.xlsxで動作ディレクトリに保存してあります。
シート名のリストを表示
EXCELファイルにあるシート名をリストとして取得します。
import openpyxl wb = openpyxl.load_workbook( "text.xlsx" ) #シート名のリストを表示 print( wb.sheetnames )
実行結果は
['Sheet1', 'Sheet2', 'Sheet3']
になります。
シート名を指定してシート取得
シート名を指定してシートオブジェクトを取得する方法は以下のようになります。
import openpyxl wb = openpyxl.load_workbook( "text.xlsx" ) #シート名を指定して取得 ws = wb[ "Sheet1" ] print( ws )
上記の実行結果は
<Worksheet "Sheet1">
と正常にシートオブジェクトが取得されています。
インデックス番号を指定してシート取得
インデックス番号を指定してシートオブジェクトを取得する方法は以下のようになります。
import openpyxl wb = openpyxl.load_workbook( "text.xlsx" ) #インデックス番号を指定してシート取得(注意:インデックス番号は0から始まる) ws = wb.worksheets[ 0 ] print( ws )
上記の実行結果は
<Worksheet "Sheet1">
と正常にシートオブジェクトが取得されています。
シート名の取得
シートオブジェクトからシート名を取得するにはtitleプロパティを参照します。
import openpyxl wb = openpyxl.load_workbook( "text.xlsx" ) # インデックス番号を指定してシート(注意:インデックス番号は0から始まる) ws = wb.worksheets[ 0 ] # シート名の確認 print( ws.title )
上記の実行結果は
Sheet1
と正常にシート名が取得されています。
シート名の変更変更
シート名を変更するにはtitleプロパティに新しいシート名を設定します。
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 )
上記の実行結果は
['Sheet1', 'Sheet2', 'Sheet3'] Sheet2 ['Sheet1', 'New Sheet Name', 'Sheet3']
となり2番目のシート名Sheet2からNew Sheet Nameに変更されています。
ワークシートの追加
シートを新規に追加するにはワークブックオブジェクトのcreate_sheetメソッドを利用します。
import openpyxl wb = openpyxl.load_workbook( "text.xlsx" ) #シート名のリストを表示 print( wb.sheetnames ) #シートを最後に追加する wb.create_sheet( title="Sheet4" ) #シート名の確認 print( wb.sheetnames ) #ワークブックを上書き保存 wb.save( "text.xlsx" )
上記の実行結果は
['Sheet1', 'Sheet2', 'Sheet3'] ['Sheet1', 'Sheet2', 'Sheet3', 'Sheet4']
で
とシートが追加されています。
また、シートを途中に追加する場合はキーワード引数indexを指定して追加します。
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" )
上記の実行結果は
['Sheet1', 'Sheet2', 'Sheet3'] ['Sheet1', 'Sheet2', 'Sheet4', 'Sheet3']
で
と途中にシートが追加されています。
シートのコピー
シートをコピーするにはワークブックオブジェクトのcopy_worksheetメソッドを利用します。
import openpyxl wb = openpyxl.load_workbook( "text.xlsx" ) #シート名のリストを表示 print( wb.sheetnames ) #シートを最後に追加する wb.copy_worksheet( wb[ "Sheet1" ] ) #シート名の確認 print( wb.sheetnames ) #ワークブックを上書き保存 wb.save( "text.xlsx" )
上記の実行結果は
['Sheet1', 'Sheet2', 'Sheet3'] ['Sheet1', 'Sheet2', 'Sheet3', 'Sheet1 Copy']
で
となります。
シート名は「元のシート名 Copy」になります。
シートの削除
シートを削除するにはワークブックオブジェクトのremoveメソッドを利用します。
import openpyxl wb = openpyxl.load_workbook( "text.xlsx" ) #シート名のリストを表示 print( wb.sheetnames ) #シートを最後に追加する wb.remove( wb[ "Sheet2" ] ) #シート名の確認 print( wb.sheetnames ) #ワークブックを上書き保存 wb.save( "text.xlsx" )
上記の実行結果は
['Sheet1', 'Sheet2', 'Sheet3'] ['Sheet1', 'Sheet3']
で
とシートが削除されています。
まとめ
Pythonのopenpyxlを使えばEXCELワークブック内のシートをシート名取得、シート名変更、シート追加、シート削除など簡単に操作することができます。