2.6.2OpenPyXLでExcelのシートを削除するコードをご紹介しています。逆にシートを追加するコードについても記事にしておきます。Workbook.create_sheet()メソッドでExcelにシートを追加できるOpenPyXLでは、Workbook.create_sheet()メソッドでシートを追加できること、引数に何も指定しなければ末尾に、「0」を指定すれば先頭に追加できることは、少し調べるとわかるのですが、いくつか気になる点があります。[スポンサードリンク]引数titleに既に存在するシートと同じ名前を指定した場合どうなるのか、シート名に使えない文字が含まれていたらどうなるのか、引数indexに(1枚しかシートがないのに999を指定するなど)インデックス番号として存在しない自然数を指定した場合にどうなるのか、あたりが私は気になりました。create_sheet()で既存シートと同じ名前を指定したとき既存のシートと同じ名前を指定して、create_sheet()メソッドを実行したときの挙動を確認するため、以下のようなスクリプトを用意しました。openpyxl.load_workbook('C:\\temp\\foo.xlsx')wb.create_sheet(title='hoge')wb.create_sheet(title='hoge')wb.create_sheet(title='hoge')wb.save('C:\\temp\\foo2.xlsx')Cドライブのtempフォルダーに、ORGシートだけが存在するfoo.xlsxを用意して、上記のスクリプトを実行すると、下図のようなfoo2.xlsxが作られます。引数titleに、既存シートと同じ名前を指定した場合、指定されたシート名の末尾に、自然数が付加された名前になるということです。titleとエラーが発生します。create_sheet()で大きな整数を指定したときwb.create_sheet(index=1048576)のように、引数indexに大きな自然数を指定した場合、特にエラーになることなく、末尾にシートが追加されます。67でもお伝えしているとおり、WorksheetsコレクションのAddメソッドでシートを追加できます。これに対しOpenPyXLの場合、メソッドを持っているのがWorkbookです。メソッド名で使われている単語も、「Add」ではなく「Create」です。結果としては同じシートの追加であっても、行われている処理は大きく違うことを感じられる気がします。Officeの使い方などを紹介し続け(2012年頃からはVBA関連記事が多め)、毎日5万人の方にご覧いただいています。