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引数を与えない場合には、最後尾に追加されます。
例えば、シート2
は 0
番目の位置、つまり、先頭のシートとして挿入されることを期待しています。
すべてのシート名を取得する
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"
フィルタモードの設定
指定したシートに対して、自動でフィルタモードを適用します。 フィルタが適用可能なシートの構造になっている必要があります。
1ws1.sheet_properties.filterMode = True
その他の属性値
sheet_properties
内には他にも様々なシートの属性値が存在します。
用途がニッチなので、紹介だけにとどめます。
属性値 | 型 | 用途 |
---|---|---|
codeName | str | CodeNameを指定します |
enableFormatConditionsCalculation | bool | 条件付き書式が自動的に適用されるかどうかを決定する値を取得または設定します |
published | bool | ドキュメント内のアイテムまたはアイテムのコレクションを Web ページ形式で保存します |
syncHorizontal | bool | 水平方向のスクロール時に、作業中のシートを同期します |
syncVertical | bool | 垂直方向のスクロール時に、作業中のシートを同期します |
まとめ
今回は openpyxl を使って以下を行いました。
- シートの作成
- シートの選択
- シートの属性値の設定
シートは他にも保護ができたり、コピーができたり多くの操作があるので、こちらも別途まとめようと思います。