openpyxlでエクセルファイルを編集しているんだけど、
データをまとめるシートを作りたい!
新しいシートを追加する方法はないのかな?
そんなお悩みを、Python歴3年の私ができるだけわかりやすく解説し、解決に導きます。
openpyxlで新しいシートを追加するには
「create_sheet()」を使います。まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import openpyxl
wb = openpyxl.load_workbook('input.xlsx')
wb.create_sheet()
#wb.create_sheet(title = '追加シート')
#wb.create_sheet(index = 0, title = '先頭シート')
wb.save('input.xlsx')
wb,create_sheet()
wb.create_sheet(title = ‘追加シート’)
wb.create_sheet(index = 0, title = ‘先頭シート’)
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
解説
新しいシートを追加
>>5.wb.create_sheet()
この一文で、新しいワークシートを追加することができます。
【 ワークブック変数.create_sheet() 】
新しいワークシートが作成される位置は、一番右側です。
再度「create_sheet()」でワークシートを追加すると、さらに右に追加されます。
(先頭にワークシートを作成する方法は後述)
追加されるワークシート名は「Sheet」です。
「Sheet」というワークシートが既に存在している場合は「Sheet1」、
「Sheet1」が存在している場合は「Sheet2」という具合になります。
シート名を指定して追加
wb.create_sheet(title = ‘追加シート’)
()内に「title = ‘ワークシート名’」を記述することで、
新しく追加するワークシートの名前を指定することができます。
【 ワークブック変数.create_sheet(title = ‘新しく追加するワークシートの名前’) 】
既に同じ名前のワークシートがある場合、どうなるのでしょうか?
これも名前を指定しない時と同様に、「○○1」という具合になります。
上書きはされませんのでご安心ください。
先頭にシートを追加
wb.create_sheet(index = 0, title = ‘先頭シート’)
新しいワークシートを先頭に追加したい場合は、
()内に「index = 0」を記述します。
これで先頭に新しいワークシートが追加され、既存のワークシートは右側に順次ズレます。
先頭ではなく、左から2番目に追加したい場合は、0ではなく「1」にしてください。
- 0:一番左側
- 1:左から2番目
- 2:左から3番目 ・・・
100番目に追加など、規定を超える位置を指定した場合でも、一番右に追加されます。
その他の解説
既存ファイルを開いて保存する方法などの操作の基本解説は、下記記事で行っております。
ご参考ください。
うまく動作しない時
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
まとめ
openpyxlでエクセルファイルに新しいシートを追加する方法を解説いたしました。
新しいシート追加=「create_sheet()」と覚えてください。
最後までお読みいただき、ありがとうございました。がんばってください!