PythonでExcel操作をするためにはopenpyxlモジュールが必要です。pipでインストールしてから使う必要があります。
以下ではワークブック(Excelファイル)は開いているものとして解説していきます。これから紹介するメソッドや関数は以下のコードの下に続いているものとして考えてください。
1 2 3 4 5 6 7 |
>>> import openpyxl >>> path = r"C:\Documents\sample.xlsx" >>> wb = openpyxl.load_workbook(path) #この続きのコードを紹介します。 #最後は必ず保存します。 >>> wb.save(path) |
Excelファイルの読み込みからシートの取得までの方法は以下の記事にまとめています。
PythonでExcel操作をするときには必ずファイル(ワークブック)の読み込みからシートの指定をする必要があります。 今回はそんな基本的な部分のコードの書き方を3ステップで紹介していきます。 1:openpyxlモジュールの[…]
Excelファイルが開かれるとWorbookオブジェクトが作られます。ワークシートを開くとWorksheetオブジェクトが作られます。
シートを読み込み
Workbookオブジェクトにシート名を指定
1 |
>>> sheet = wb['シート1'] |
辞書のようにシート名をキーとして指定するとWorksheetオブジェクトを作ることができます。
その他のシートを読み込む方法は以下の記事にまとめいています。
PythonでExcel操作をするときには必ずファイル(ワークブック)の読み込みからシートの指定をする必要があります。 今回はそんな基本的な部分のコードの書き方を3ステップで紹介していきます。 1:openpyxlモジュールの[…]
シートを追加(新規作成)
- create_sheetメソッドを使う
- 引数なしなら「Sheet」を末尾に追加
- indexとtitleをキーワード引数で渡せる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#引数なしなら末尾に追加 >>> wb.create_sheet() <Worksheet "Sheet"> >>> wb.sheetnames #シート名一覧を取得 ['シート1', 'Sheet'] #シート名を指定 >>> wb.create_sheet(title='新シート') <Worksheet "新シート"> >>> wb.sheetnames ['シート1', 'Sheet', '新シート'] #インデックスを指定 >>> wb.create_sheet(index=2) <Worksheet "Sheet1"> >>> wb.sheetnames ['シート1', 'Sheet', 'Sheet1', '新シート'] #インデックスとシート名を指定 >>> wb.create_sheet(index=0, title='先頭') <Worksheet "先頭"> >>> wb.sheetnames ['先頭', 'シート1', 'Sheet', 'Sheet1', '新シート'] |
キーワード引数はインデックスだけでもタイトルだけでも構いません。インデックスだけ指定するとシート名は自動で割り振られます。
インデックスの指定方法はリストと同じように0から始まる整数を使いいます。
sheetnames属性を使うとワークブックないのシート名一覧を取得できます。
シートを削除
- remove_sheetメソッドを使う
- 警告が出ますが削除できます
- removeメソッドを使う
- 引数にWorksheetオブジェクトを渡す
- del文を使う
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#最初の状態 >>> wb.sheetnames ['先頭', 'シート1', 'Sheet', 'Sheet1', '新シート'] >>> sheet = wb['新シート'] #警告は出ますが削除できています >>> wb.remove_sheet(sheet) Warning (from warnings module): File "<pyshell#13>", line 1 DeprecationWarning: Call to deprecated function remove_sheet (Use wb.remove(worksheet) or del wb[sheetname]). >>> wb.sheetnames ['先頭', 'シート1', 'Sheet', 'Sheet1'] #推奨のメソッド >>> sheet = wb['Sheet1'] >>> wb.remove(sheet) >>> wb.sheetnames ['先頭', 'シート1', 'Sheet'] >>> wb.remove(wb['Sheet']) >>> wb.sheetnames ['先頭', 'シート1'] #del文 >>> del wb['先頭'] >>> wb.sheetnames ['シート1'] |
「DeprecationWarning」とう警告文は「remove_sheetメソッドではなく「removeメソッドかdel文を使ってね」という内容です。
シートをコピー
- copy_worksheetメソッドを使う
- 引数にWorksheetオブジェクトを渡す
1 2 3 4 5 6 7 8 9 |
#最初の状態 >>> wb.sheetnames ['シート1'] #コピーを作成 >>> wb.copy_worksheet(wb['シート1']) <Worksheet "シート1 Copy"> >>> wb.sheetnames ['シート1', 'シート1 Copy'] |
シートの名前を変える
title属性を変更する
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#最初の状態 >>> wb.sheetnames ['シート1'] >>> sheet = wb['シート1'] #変更前シート名の確認 >>> sheet.title 'シート1' #シート名の変更 >>> sheet.title = 'シート改' #変更後シート名の確認 >>> sheet.title 'シート改' |
まとめ
- 追加・新規作成:create_sheetメソッド
- 引数はシート名
- 削除:removeメソッド
- 引数はWorksheetオブジェクト
- コピー:copy_worksheetメソッド
- 引数はWorksheetオブジェクト
- 名前の変更:title属性
プログラミング言語のなかでも人気の高いPythonを学習する教材を紹介します。 最近ではプログラミングスククールがたくさんあるので迷うと思います。 ですが、まずは無料教材から始めてみましょう。苦労した分だけ力がつきます。 […]