openpyxl でテーブル機能を活用し、集計しやすい表を作成する方法

Excel の テーブル機能 を用いると、列ごとの自動フィルターやデザインの統一、構造化参照による関数の簡略化など、多くのメリットが得られます。Python の openpyxl では Table クラスと TableStyleInfo クラスを組み合わせることで、ブック生成時にテーブルを自動設定できます。本記事では、見やすさと集計効率を向上させるテーブル作成手順を解説いたします。


目次

動作環境

項目内容
Python3.10 以上
ライブラリopenpyxl (pip install openpyxl)
入力ファイル例sales_data.xlsx
出力ファイル例sales_data_table.xlsx

サンプルコード

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

# 1. ワークブックとシートを取得
wb = load_workbook('sales_data.xlsx')
ws = wb.active

# 2. テーブル範囲と表示名を設定
tbl = Table(
    displayName='SalesTbl',   # テーブル名(英字 + 数字先頭不可)
    ref='C3:H20'              # 見出し行を含む範囲
)

# 3. テーブルスタイルを作成
style = TableStyleInfo(
    name='TableStyleMedium4', # 既定スタイル名(Medium 系は配色バランス良好)
    showRowStripes=True,      # 行ごとに縞模様
    showColumnStripes=False,  # 列の縞模様は無効
    showFirstColumn=True,     # 最左列を強調(太字 + 色)
    showLastColumn=False      # 最右列は通常表示
)

tbl.tableStyleInfo = style

# 4. シートへテーブルを追加
ws.add_table(tbl)

# 5. 保存
wb.save('sales_data_table.xlsx')

パラメータ解説

パラメータ設定値効果
displayName'SalesTbl'テーブル名。英数字・アンダースコアのみ使用可能
ref'C3:H20'見出し行を含む範囲(行列番号で指定)
name(スタイル名)'TableStyleMedium4'Excel 既定 60 種前後のスタイルを指定可能
showRowStripesTrue / False行の背景色を交互表示
showColumnStripesTrue / False列の背景色を交互表示
showFirstColumnTrue / False最左列を太字・着色で強調
showLastColumnTrue / False最右列を太字・着色で強調

テーブル機能の主な利点

  1. 自動フィルターと並べ替え
    列見出しにフィルターボタンが自動追加され、範囲指定なしで絞り込みが可能です。
  2. 構造化参照
    =SUM(SalesTbl[Amount]) のように列名で計算式を記述でき、シート構成変更時の修正コストを低減できます。
  3. 行追加時の書式継承
    データを最終行の下へ入力すると自動でテーブル範囲が拡張され、色・罫線も維持されます。
  4. ピボットテーブル作成が容易
    ソース範囲が動的に拡張されるため、ピボットテーブル更新時に範囲を再指定する手間が省けます。

応用アイデア

目的実装ヒント
データ更新ごとにテーブル範囲を再計算ws.max_rowws.max_column を使い ref を自動生成
色覚多様性に配慮した配色を採用TableStyleLight 系スタイルを指定し、彩度を抑える
テーブルを複数シートへ自動配置ループでシートを回し、add_table() を連続適用

まとめ

  • Table × TableStyleInfo を用いると、Excel のテーブル機能を Python から再現できます。
  • 行・列の縞模様や最左列強調など、視認性を高めるオプション はプロパティで簡単に切り替え可能です。
  • テーブル化により フィルター・集計・書式維持 など多くのメリットが得られるため、月次レポートやデータ集計シートの自動生成にお勧めです。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次