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

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

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

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

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

シート名のリストを表示

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']


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

また、シートを途中に追加する場合はキーワード引数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']


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

シートのコピー

シートをコピーするにはワークブックオブジェクトの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']


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

シート名は「元のシート名 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でシートを削除した結果
とシートが削除されています。

まとめ

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

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

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

お問合せ