注目キーワード

【Python】Excelの書き込み操作(openpyxl)②~シート偏~

今回は前回の続きで「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'

それでは実際に動かしてみましょう。

まず初めに、実施するプログラムが配置しているフォルダの中身を確認します。ブックはまだ作成されていませんね。

プログラム実施前

「sample_write_openpyxl_sheet_rename_1.py」を実行します。

sample_write_openpyxl_sheet_rename_1.py実行

実行後に同じフォルダを確認すると「Book.xlsx」が作られています。

プログラム実施後

実際に開いてみると、確かに「シート名1」とシート名が設定されていますね。

Bookの内容

シートの書き込み操作②シート名変更

次は、シート名を指定して「シート名」の変更を行いたいと思います。帳票などを作るときに便利だと思います。

サンプルプログラムを用意しました。今回は先ほどとは違って既に存在するブックファイルに対して変更を行います。

4行目で対象ブックを開いてワークブックのオブジェクトを取得します。

そしてそのオブジェクトに対してシート名を指定することでシートのオブジェクトを取得します。(5行目)

シートのオブジェクトさえ取得できれば、後は先ほどのサンプルプログラムと同様に「title」に任意のシート名を設定してあげればOKです。

ワークブックのオブジェクト = openpyxl.load_workbook(filename='対象のファイル名')シートのオブジェクト = ワークブックのオブジェクト['Sheet1']シートのオブジェクト.title = 'シート名1'

それでは、このサンプルも実際に動かしてみます。実施する前に準備を行います。

まず「ひな形.xlsx」というファイルを用意します。

プログラム実行前

ファイルの中身は1シートで「Sheet1」となっていることを確認しましょう。

確認が出来たらファイルを閉じましょう、開いたままだとエラーが発生するので気を付けてください。

Bookの内容

プログラムを実行します。

sample_write_openpyxl_sheet_rename_2.py実行

実行した後にファイルのタイムスタンプを確認すると変更されていますね。

プログラム実行後

実行後にブックを開いて確認すると「シート名1」と変更がされています。

Bookの内容

シートの書き込み操作③シートの追加

シートの追加方法についても触れていきます。先ほどの「ひな形.xlsx」のブックに新しく「Sheet2」というシートを追加してみましょう。

4行目で取得したワークブックのオブジェクトに対して5行目でシートを追加しています。「create_sheet(‘追加したいシート名’)」で追加できます。サンプルプログラムでは、「Sheet2」を追加しています。

ワークブックのオブジェクト = openpyxl.load_workbook(filename='対象のワークブック')ワークブックのオブジェクト.create_sheet('追加したいシート名')

実施前は先ほどの追加いまわしで「ひな形.xlsx」を使います。

実施前

プログラムを実行します。

スポンサーリンク

sample_write_openpyxl_sheet_add.py実行

同じファイルに対して更新をかけただけなのでブックは増えていません。サイズが少し増加しています。

プログラム実行後

ブックの中身を確認すると新しくシートが追加されています。

ブックの中身

シートの書き込み操作④シートの複製

最後にシートの複製方法について説明します。

以下のサンプルプログラムでは、あらかじめ用意した「ひな形」というシートを複製してシート名を変更して保存します。

4行目でファイルを開いてオブジェクトを取得します。

6行目でシート名を指定してシートのオブジェクトを取得します。

ワークブックのオブジェクト = openpyxl.load_workbook(filename='対象ファイル')template_sheet = ワークブックのオブジェクト['ひな形']

8行目では「copy_worksheet(シートのオブジェクト)」で対象のワークブックにシートを複製しています。

戻り値としてアクティブになったシートが取得できるので、9行目でシート名を変更しています。

複製されたオブジェクト = ワークブックのオブジェクト.copy_worksheet(シートのオブジェクト)

それでは実際に動かしてみましょう。動かす前の準備でファイルを用意します。

実行前のフォルダ

ブックの中身はこんな感じです。確認したらファイルは閉じてから実行しましょう。

ブックの内容

プログラムを実行します。

sample_write_openpyxl_sheet_copy.py実行

サイズがなぜか小さくなっているけどタイムスタンプが更新されています。

実行後

ブックを開いて中身を確認するとシートが追加されています。

ブックの内容➀

複製されたシートを確認してみても同じ内容になっています。

ブックの内容②

まとめ

シート名の変更方法は「シートのオブジェクト」を取得し「title」を書き換える。

シートの追加は「ワークブックのオブジェクト」を取得し、「create_sheet(‘追加したいシート名’)」で追加する。

シートを複製する場合は複製したいシートのオブジェクトを取得し「ワークブックのオブジェクト.copy_worksheet(シートのオブジェクト)」で複製する。