【Python】Tableオブジェクトを使用して、表を作成する。


pythonを使用してExcelファイルの操作を勉強しています。
本日の気づき(復習)は、表(セル)の移動に関してです。
pythonでExcelを操作するため、openpyxlというパッケージを使用しています。

上記のようなブック「商品リスト」に

のようなテーブルを設定したいです。

Tableオブジェクト

table = Table(displayName='テーブル名', ref='設定するセルの範囲')

テーブルの作成にはTableオブジェクトを使用します。

displayNameには同じブック内で重複する名前を付けない限りは
特に縛りはないので好きな名前を付けちゃいましょう。

ref引数へはテーブルにしたいセル範囲を記述します。

TableStyleInfoオブジェクト

TableStyleInfo(name='テーブルのスタイル名', 行や列の色を変更する設定)

次にTableStyleInfoオブジェクトを使って、Excelで用意されている
スタイルを設定します。

name引数へは用意されているテーブルスタイル名を記述します。

  • TableStyleLight:淡色(1~21)
  • TableStyleMedium:中間(1~28)
  • TableStyleDark:濃色(1~11)

中々に種類が多いので実際に見てみるのが一番早いかもしれません。
個人的には「TableStyleMedium8」がお気に入りです。

また、行や列の色を変更する設定も可能で

  • showRowStripes:Trueにすると、行の色が縞模様で表示
  • showColumnStripes:Trueにすると、列の色が縞模様で表示
  • showFirstColumn:Trueにすると、最初の列に色が付く
  • showLastColumn:Trueにすると、最後の列に色が付く

これは見比べた方が速いですね。

showRowStripes=True

showColumnStripes=True

showFirstColumn=True

showLastColumn=True

正直、showRowStripes=True以外に使い道があるのか不思議ですが・・・。

table.tableStyleInfo属性

table.tableStyleInfo = table_style

table.tableStyleInfo属性に、先ほど作成した「table_style」を代入することで
テーブルスタイルがテーブルに設定されます。

Worksheet.add_tableメソッド

ws.add_table(table)

最後に、Worksheet.add_tableメソッドを呼び出してシートにテーブルを追加します。

最終的なコード

from openpyxl import load_workbook
from openpyxl.worksheet.table import Table, TableStyleInfo

wb = load_workbook('商品リスト.xlsx')
ws = wb.active

# テーブルを生成する
table = Table(displayName='Table1', ref='B2:I24')

# テーブルのスタイルを決めておく
table_style = TableStyleInfo(name='TableStyleMedium8', showRowStripes=True)

# テーブルのスタイルを設定
table.tableStyleInfo = table_style

# シートにテーブルを追加
ws.add_table(table)

wb.save('商品リスト_テーブル.xlsx')

なんだかややこしい記述となってしまいましたが、
出来上がるときれいなテーブルを作れるのでお勧めです。

テーブル自体は使い勝手が良いので使用していましたが、
縦縞(列の色を縞模様)が出来たりするのを知れて有意義な時間でした。