今回は前回の続きで「openpyxl」でExcelのシートに対して様々な操作を行っていきたいと思います。
具体的には、シート名の変更、シートの追加、シート複製です。今回もサンプルソースを使いながら説明していきたいと思います。
対象レベル
Pythonの環境設定が整っており、Pythonの基本構文が理解出来ること。
詳しくは「【Python入門】〜初級編〜環境構築・基本構文まとめ」にまとめてあります。興味のある方はご覧ください。
インストール方法
前回の記事でも書きましたが「openpyxl」はインストールが必要なのでコマンドプロンプトで以下のインストールコマンドを叩いてください。
pip install openpyxl
シートの書き込み操作➀シート名変更
まず初めに、インデックス指定でシート名を変更する方法について説明していきたいと思います。
下のサンプルプログラムでは、1シート目のシート名が「シート名1」と設定された、新規のブックファイル(Book.xlsx)を作成します。
2目で「openpyxl」をインポートします。
import openpyxl
4行目〜6行目が今回のキモです。4行目でワークブックのオブジェクトを生成します。
5行目では、ワークブックオブジェクトの「 worksheets」のインデックスを指定することでシートのオブジェクトを指定しています。なので今回はインデックス「0」を指定しているので一番最初のシートを取得しています。
そして、シートのオブジェクトの「title」に任意の名前を設定します。
後は、保存したい名前で「save」してブックを閉じます。
ワークブックのオブジェクト = openpyxl.Workbook()シートのオブジェクト = ワークブックのオブジェクト.worksheets[インデックス]シートのオブジェクト.title = 'シート名1'
それでは実際に動かしてみましょう。
まず初めに、実施するプログラムが配置しているフォルダの中身を確認します。ブックはまだ作成されていませんね。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/➀実施前.jpg?resize=392%2C152&ssl=1)
「sample_write_openpyxl_sheet_rename_1.py」を実行します。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/➀実施.jpg?resize=467%2C82&ssl=1)
実行後に同じフォルダを確認すると「Book.xlsx」が作られています。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/➀実施後.jpg?resize=470%2C151&ssl=1)
実際に開いてみると、確かに「シート名1」とシート名が設定されていますね。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/➀実施後_2.jpg?resize=329%2C257&ssl=1)
シートの書き込み操作②シート名変更
次は、シート名を指定して「シート名」の変更を行いたいと思います。帳票などを作るときに便利だと思います。
サンプルプログラムを用意しました。今回は先ほどとは違って既に存在するブックファイルに対して変更を行います。
4行目で対象ブックを開いてワークブックのオブジェクトを取得します。
そしてそのオブジェクトに対してシート名を指定することでシートのオブジェクトを取得します。(5行目)
シートのオブジェクトさえ取得できれば、後は先ほどのサンプルプログラムと同様に「title」に任意のシート名を設定してあげればOKです。
ワークブックのオブジェクト = openpyxl.load_workbook(filename='対象のファイル名')シートのオブジェクト = ワークブックのオブジェクト['Sheet1']シートのオブジェクト.title = 'シート名1'
それでは、このサンプルも実際に動かしてみます。実施する前に準備を行います。
まず「ひな形.xlsx」というファイルを用意します。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/②実施前.jpg?resize=625%2C190&ssl=1)
ファイルの中身は1シートで「Sheet1」となっていることを確認しましょう。
確認が出来たらファイルを閉じましょう、開いたままだとエラーが発生するので気を付けてください。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/②実施前_2.jpg?resize=344%2C199&ssl=1)
プログラムを実行します。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/②実施.jpg?resize=485%2C55&ssl=1)
実行した後にファイルのタイムスタンプを確認すると変更されていますね。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/②実施後_1.jpg?resize=605%2C177&ssl=1)
実行後にブックを開いて確認すると「シート名1」と変更がされています。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/②実施後_2.jpg?resize=362%2C240&ssl=1)
シートの書き込み操作③シートの追加
シートの追加方法についても触れていきます。先ほどの「ひな形.xlsx」のブックに新しく「Sheet2」というシートを追加してみましょう。
4行目で取得したワークブックのオブジェクトに対して5行目でシートを追加しています。「create_sheet(‘追加したいシート名’)」で追加できます。サンプルプログラムでは、「Sheet2」を追加しています。
ワークブックのオブジェクト = openpyxl.load_workbook(filename='対象のワークブック')ワークブックのオブジェクト.create_sheet('追加したいシート名')
実施前は先ほどの追加いまわしで「ひな形.xlsx」を使います。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/②実施後_2-1.jpg?resize=362%2C240&ssl=1)
プログラムを実行します。
スポンサーリンク
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/③実行.jpg?resize=418%2C56&ssl=1)
同じファイルに対して更新をかけただけなのでブックは増えていません。サイズが少し増加しています。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/③実行後_1.jpg?resize=615%2C186&ssl=1)
ブックの中身を確認すると新しくシートが追加されています。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/③実行後_2.jpg?resize=343%2C210&ssl=1)
シートの書き込み操作④シートの複製
最後にシートの複製方法について説明します。
以下のサンプルプログラムでは、あらかじめ用意した「ひな形」というシートを複製してシート名を変更して保存します。
4行目でファイルを開いてオブジェクトを取得します。
6行目でシート名を指定してシートのオブジェクトを取得します。
ワークブックのオブジェクト = openpyxl.load_workbook(filename='対象ファイル')template_sheet = ワークブックのオブジェクト['ひな形']
8行目では「copy_worksheet(シートのオブジェクト)」で対象のワークブックにシートを複製しています。
戻り値としてアクティブになったシートが取得できるので、9行目でシート名を変更しています。
複製されたオブジェクト = ワークブックのオブジェクト.copy_worksheet(シートのオブジェクト)
それでは実際に動かしてみましょう。動かす前の準備でファイルを用意します。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/④実行前.jpg?resize=606%2C207&ssl=1)
ブックの中身はこんな感じです。確認したらファイルは閉じてから実行しましょう。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/④実行前_1.jpg?resize=289%2C199&ssl=1)
プログラムを実行します。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/④実行.jpg?resize=410%2C58&ssl=1)
サイズがなぜか小さくなっているけどタイムスタンプが更新されています。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/④実行後1.jpg?resize=600%2C232&ssl=1)
ブックを開いて中身を確認するとシートが追加されています。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/④実行後2.jpg?resize=294%2C256&ssl=1)
複製されたシートを確認してみても同じ内容になっています。
![](https://i0.wp.com/neko-py.com/wp-content/uploads/2019/10/④実行後3.jpg?resize=272%2C195&ssl=1)
まとめ
シート名の変更方法は「シートのオブジェクト」を取得し「title」を書き換える。
シートの追加は「ワークブックのオブジェクト」を取得し、「create_sheet(‘追加したいシート名’)」で追加する。
シートを複製する場合は複製したいシートのオブジェクトを取得し「ワークブックのオブジェクト.copy_worksheet(シートのオブジェクト)」で複製する。