ExcelをPython(openpyxl)で操作する - シートの作成、シート属性値変更

ExcelをPython(openpyxl)で操作する - シートの作成、シート属性値変更
目次

前回の ExcelをPython(openpyxl)で操作する - ファイルの作成と保存 では openpyxl を使って Excelファイルの作成 を行いました。

今回は、Excelファイルの シートの操作 を行ってみましょう。

実行環境

実行環境とのそのバージョンは前回同様以下になります。

  • python 3.6
  • openpyxl 2.5.6

シートの新規追加

新規でシートを追加するには create_sheet 関数を使います。

 1from openpyxl.workbook import Workbook
 2
 3wb = Workbook()
 4
 5# 最後尾にシートを追加
 6ws1 = wb.create_sheet("シート1")
 7ws1.title = "シート1のタイトル"
 8
 9# 先頭にシートを追加
10ws2 = wb.create_sheet("シート2", 0)
11ws2.title = "シート2のタイトル"
12
13wb.save(filename = 'sample_book.xlsx')

create_sheet 関数は第2引数に数字を与えることで、 シートを挿入する位置 を調整できます。 第2引数を与えない場合には、最後尾に追加されます。

例えば、シート20 番目の位置、つまり、先頭のシートとして挿入されることを期待しています。

insert_sheet

すべてのシート名を取得する

Excelファイル内に存在するすべてのシート名を確認するには Workbook オブジェクトの sheetnames プロパティを参照します。

1wb.sheetnames
2# 結果はリストで取得できる
3# ['シート2のタイトル', 'Sheet', 'シート1のタイトル']

また、 Workbook オブジェクトに対して for ループを使うことで、 各シートを Worksheet オブジェクトとして取得することもできます。

1for ws in wb:
2    print(ws.title)

シートの選択

Workbook オブジェクトから シート名を指定する ことで、操作したい対象のシートを取得できます。

1# wbはWorkbookオブジェクトを表す
2ws1 = wb["シート1のタイトル"]

シートの属性値の変更

タブの色を変更

シートのタブの色を変更したい場合には、 シートの属性情報( sheet_properties )にアクセスして tabColor プロパティにカラーコードを入力します。

1ws1.sheet_properties.tabColor = "1072BA"

tab_color

フィルタモードの設定

指定したシートに対して、自動でフィルタモードを適用します。 フィルタが適用可能なシートの構造になっている必要があります。

1ws1.sheet_properties.filterMode = True

その他の属性値

sheet_properties 内には他にも様々なシートの属性値が存在します。

用途がニッチなので、紹介だけにとどめます。

属性値用途
codeNamestrCodeNameを指定します
enableFormatConditionsCalculationbool条件付き書式が自動的に適用されるかどうかを決定する値を取得または設定します
publishedboolドキュメント内のアイテムまたはアイテムのコレクションを Web ページ形式で保存します
syncHorizontalbool水平方向のスクロール時に、作業中のシートを同期します
syncVerticalbool垂直方向のスクロール時に、作業中のシートを同期します

まとめ

今回は openpyxl を使って以下を行いました。

  • シートの作成
  • シートの選択
  • シートの属性値の設定

シートは他にも保護ができたり、コピーができたり多くの操作があるので、こちらも別途まとめようと思います。