はじめに:ただのデータ羅列から、「意味のあるデータ」へ
Pythonを使って大量のデータをExcelファイルに出力したとき、「ただ数字が並んでいるだけで、なんだか見にくいな…」と感じたことはありませんか? 手作業でフィルターを付けたり、一行おきに色を塗ったりするのは、せっかく自動化したのに少し残念ですよね。
そんな悩みを一発で解決するのが、Excelの**「テーブル」**機能です。そして、この強力な機能をPythonのopenpyxlライブラリで自動的に設定することができます。
この記事で、あなたのExcel出力が変わる
この記事を読めば、openpyxlを使って単なるデータの羅列を、**フィルターや並べ替えが自由自在な、スタイリッシュで見やすい「構造化データ」**へと変身させる方法がわかります。
openpyxlでのテーブル作成の基本- データ範囲の指定とテーブル名の設定方法
- 豊富な組み込みスタイルで見た目を一瞬で整えるテクニック
ただ値をセルに書き込むだけのスクリプトから卒業し、誰にでも喜ばれる、実用的なExcelファイルを生成するスキルを身につけましょう。
なぜ「テーブル」にすると見違えるのか?
Excelのテーブル機能は、単なる見た目の問題ではありません。指定されたデータ範囲を一つのまとまりとしてExcelに認識させることで、以下のようなメリットが生まれます。
- 操作性の向上: ヘッダーに自動でフィルターボタンが付き、並べ替えや絞り込みが容易になります。
- 可読性の向上: 縞模様の行スタイルが自動で適用され、データの行を追いやすくなります。
- メンテナンス性の向上: 新しいデータを追加した際に、書式や数式が自動で拡張されます。
この強力な機能をPythonで操ることで、あなたのデータ出力は次のレベルに進みます。
openpyxlでテーブルを作成する3つのステップ
テーブルの作成は驚くほど簡単です。必要なクラスをインポートし、オブジェクトを作成して、ワークシートに追加するだけです。
Step 1: 必要なクラスをインポートする
まず、テーブル作成の主役であるTableクラスと、スタイルを担当するTableStyleInfoクラスをインポートします。
from openpyxl.worksheet.table import Table, TableStyleInfoStep 2: Tableオブジェクトを作成する
次に、Tableクラスからオブジェクトを生成します。最も重要な引数は、テーブルの名前となるdisplayNameと、データ範囲を示すrefです。
# 'SalesData'という名前で、A1からD20の範囲をテーブルとする
table = Table(displayName="SalesData", ref="A1:D20")displayName: Excel上で表示されるテーブル名です。日本語も使えます。ref: 必ずヘッダー行を含めたデータ全体の範囲を'A1:D20'のように文字列で指定します。
Step 3: ワークシートにテーブルを追加する
最後に、作成したTableオブジェクトを、対象のワークシートオブジェクトのadd_table()メソッドで追加します。
# wsは対象のワークシートオブジェクト (e.g., ws = wb.active)
ws.add_table(table)これだけで、あなたのデータはExcel上で正式な「テーブル」として認識されます。
【実践】Pythonコードでテーブルを自動設定する
理論がわかったところで、実際にデータを書き込み、テーブル化するまでの一連の流れを見ていきましょう。
サンプルデータの書き込み
まずは、テーブル化する元となるデータをExcelシートに書き出します。
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.title = "StoreSales"
# ヘッダー行とデータ行を追加
sales_data = [
['店舗名', '商品カテゴリ', '売上', '販売日'],
['東京本店', '飲料', 78000, '2025-09-24'],
['大阪支店', '食品', 52000, '2025-09-24'],
['東京本店', '雑貨', 35000, '2025-09-24'],
['福岡支店', '飲料', 45000, '2025-09-24'],
]
for row in sales_data:
ws.append(row)この時点では、まだ単なる値が入力されただけの状態です。
テーブルの適用とスタイルの設定
次に、このデータ範囲にテーブルを適用し、見た目を整えます。
from openpyxl.worksheet.table import Table, TableStyleInfo
# ...(上記のデータ書き込み処理に続けて)...
# テーブルオブジェクトを作成
# displayNameは任意の名前に, refは実際のデータ範囲に合わせる
table = Table(displayName="店舗別売上", ref="A1:D5")
# 見た目を整えるためのスタイル情報を設定
# Excelの組み込みスタイル "TableStyleMedium2" を使用
# showRowStripes=Trueで行を縞模様にする
style = TableStyleInfo(name="TableStyleMedium2",
showFirstColumn=False,
showLastColumn=False,
showRowStripes=True,
showColumnStripes=False)
# スタイルをテーブルオブジェクトに適用
table.tableStyleInfo = style
# ワークシートにテーブルを追加!
ws.add_table(table)
# 保存して結果を確認
wb.save("sales_report.xlsx")このコードを実行して生成されたsales_report.xlsxを開いてみてください。データ範囲が美しいデザインのテーブルになり、ヘッダーで自由に並べ替えやフィルターができるようになっているはずです。
スタイルを使いこなして、さらに見やすく
TableStyleInfoのnameプロパティを変更するだけで、様々なデザインを試すことができます。
TableStyleLight[1-21]: 明るい配色TableStyleMedium[1-28]: 標準的な配色TableStyleDark[1-11]: 暗い配色
例えば、name="TableStyleDark9"と指定すれば、黒を基調としたシックなデザインのテーブルになります。レポートのテーマや好みに合わせて色々なスタイルを試してみてください。
また、showFirstColumn=Trueにすると先頭列の文字が太字になるなど、細かいオプションで見た目を調整することも可能です。
まとめ:openpyxl.Tableでデータに命を吹き込もう
今回は、openpyxlのテーブル機能を使って、Pythonが出力するExcelファイルを見違えるようにする方法を解説しました。
Tableオブジェクトでデータ範囲を構造化するrefでヘッダーを含む範囲を正確に指定するTableStyleInfoでデザインを瞬時に適用する
これらのテクニックを使えば、あなたはもう「ただデータを吐き出すだけ」のプログラマではありません。受け取った人が直感的に内容を理解し、すぐさま分析作業に取り掛かれるような、価値あるExcelレポートを生成するデータハンドリングのプロです。
ぜひ、あなたの次のプロジェクトからopenpyxl.Tableを活用してみてください。


コメント