PythonでExcelファイルを操作できるopenpyxl、とても便利ですよね。「データの入力や計算は自動化できたけど、テーブルの見た目を整えるのは結局手作業…」そんな風に感じていませんか?
この記事は、そんなお悩みを持つ初心者の方に向けて、openpyxlのTableStyleInfoという機能を使ったExcelテーブルの書式設定について、基礎から丁寧に解説します。
この記事を読めば、あなたは次のことができるようになります。
TableStyleInfoとは何か、その役割が理解できる- Pythonコードだけで、Excelテーブルに好きなデザインを適用する方法がわかる
- 行の縞模様や列の強調など、細かいデザイン調整を自動化できる
この記事を読み終える頃には、手作業でのデザイン調整から一歩進んで、見た目も美しいExcelファイルを完全に自動で作成できるようになっているはずです。それでは、一緒に学んでいきましょう!
はじめに:テーブルの「書式設定」も自動化しよう
openpyxlを使ってデータを書き込んだだけだと、テーブルはとてもシンプルな見た目です。見やすくするためには、Excelを開いて「テーブルデザイン」タブから色を選んだり、オプションにチェックを入れたりする必要があります。
この一連の作業を、Pythonコード上で完結させてくれるのがTableStyleInfoです。 TableStyleInfoを使いこなせば、データ作成からデザイン適用までを一つのスクリプトで実行でき、作業効率が飛躍的にアップします。
TableStyleInfoとは?難しくない、Excelの「アレ」です
TableStyleInfoという名前だけ聞くと少し難しく感じるかもしれませんが、心配いりません。 これは、Excelの「テーブルデザイン」タブの機能をPythonから操作するための部品だと考えてください。
具体的には、下図の赤枠で囲まれた「テーブルスタイル」の選択と、「テーブルスタイルのオプション」のチェックボックス操作をコードで行うことができます。
TableStyleInfoを使えば、これらのマウス操作をすべてコードに置き換えることができるのです。
TableStyleInfoの基本的な使い方【最初のステップ】
まずは、TableStyleInfoの最も基本的な使い方として、Excelに元々用意されているデザイン(定義済みスタイル)をテーブルに適用してみましょう。
ここでのゴールは、シンプルなデータ範囲を、青色基調のデザインが適用されたテーブルに変換することです。
サンプルコード:定義済みスタイルを適用してみよう
以下のコードは、A1からC5の範囲にデータを持つテーブルを作成し、「TableStyleMedium9」という名前のスタイルを適用する例です。 コードをコピーして、お手元の環境で実行してみてください。
import openpyxl
from openpyxl.worksheet.table import Table, TableStyleInfo
# 1. 新しいExcelファイル(ワークブック)とシートを作成
wb = openpyxl.Workbook()
ws = wb.active
# 2. テーブルにしたいデータを準備
data = [
['商品名', '単価', '数量'],
['リンゴ', 120, 15],
['バナナ', 80, 20],
['オレンジ', 150, 10],
['ブドウ', 300, 5]
]
# シートにデータを書き込み
for row in data:
ws.append(row)
# 3. TableStyleInfoオブジェクト(設計図)を作成
# nameに適用したいExcelのスタイル名を指定します。
# showRowStripes=True は行の縞模様を有効にする設定です。
style = TableStyleInfo(name="TableStyleMedium9",
showFirstColumn=False,
showLastColumn=False,
showRowStripes=True,
showColumnStripes=False)
# 4. Tableオブジェクト(テーブル本体)を作成
# displayNameはExcel内で表示されるテーブルの名前です。
# refはテーブルの適用範囲(A1セルからC5セルまで)です。
table = Table(displayName="SalesTable", ref="A1:C5")
# 5. テーブル本体に、作成したスタイル設計図を適用
table.tableStyleInfo = style
# 6. シートにテーブルを追加
ws.add_table(table)
# 7. ファイルを保存
wb.save("simple_styled_table.xlsx")
print("テーブルスタイルを設定したExcelファイルを保存しました。")このコードを実行すると、simple_styled_table.xlsxというファイルが作成され、中には綺麗なデザインのテーブルができあがっているはずです。
TableStyleInfoの便利な設定項目を解説
TableStyleInfo(...)のカッコの中に指定しているのが、デザインの細かい設定項目(プロパティ)です。これらはExcelのチェックボックスのON/OFFスイッチのようなものです。主要なものを覚えれば、デザインの幅がぐっと広がります。
name: スタイル名を指定する
これは適用したいデザインの名前です。Excelには"TableStyleMedium2"や"TableStyleDark5"など、たくさんのスタイルが用意されています。色々試してお気に入りを見つけるのも良いでしょう。
showFirstColumn: 先頭列を強調するスイッチ
これをTrueにすると、テーブルの一番左の列(見出し列など)が太字になり、目立たせることができます。 使い方: showFirstColumn=True
showLastColumn: 最終列を強調するスイッチ
これをTrueにすると、テーブルの一番右の列(合計列など)が強調されます。 使い方: showLastColumn=True
showRowStripes: 行の縞模様スイッチ
これをTrueにすると、行が1行おきに色付けされ、データが格段に見やすくなります。多くのスタイルでデフォルトでTrueになっています。 使い方: showRowStripes=True
showColumnStripes: 列の縞模様スイッチ
行だけでなく、列を縞模様にしたい場合はこれをTrueにします。 使い方: showColumnStripes=True
【応用編】プロパティを組み合わせてみよう
それでは、今学んだプロパティを組み合わせて、少しカスタマイズしたデザインをテーブルに適用してみましょう。
以下のコードでは、緑系の「TableStyleMedium2」をベースに、先頭列(ID)と最終列(合計金額)を目立たせ、行には縞模様を適用してみます。
import openpyxl
from openpyxl.worksheet.table import Table, TableStyleInfo
# ワークブックとワークシートの準備
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "CustomStyleSheet"
# サンプルデータ
data = [
['ID', '製品名', 'カテゴリ', '価格', '在庫数', '合計金額'],
['P001', '商品A', '文房具', 100, 50, 5000],
['P002', '商品B', '雑貨', 350, 20, 7000],
['P003', '商品C', '文房具', 220, 30, 6600],
]
for row in data:
ws.append(row)
# TableStyleInfoでデザインを細かく指定
custom_style = TableStyleInfo(
name="TableStyleMedium2", # ベースは緑系のスタイル
showFirstColumn=True, # 先頭列を強調 ON
showLastColumn=True, # 最終列を強調 ON
showRowStripes=True, # 行の縞模様 ON
showColumnStripes=False # 列の縞模様 OFF
)
# テーブルオブジェクトを作成
table = Table(displayName="ProductTable", ref="A1:F4")
table.tableStyleInfo = custom_style
# ワークシートにテーブルを追加
ws.add_table(table)
# ファイルを保存
wb.save("custom_styled_table_beginner.xlsx")
print("カスタムデザインのテーブルを持つExcelファイルを保存しました。")このように、TableStyleInfoの各スイッチをTrueやFalseに切り替えるだけで、簡単にデザインをカスタマイズできます。
まとめ
今回は、openpyxlのTableStyleInfoを使ってExcelテーブルの書式設定を自動化する方法を、初心者向けに解説しました。
TableStyleInfoはExcelの「テーブルデザイン」機能をコードで操作するものnameプロパティで好きなデザイン名を選べるshow...系のプロパティ(スイッチ)で、列の強調や縞模様をON/OFFできる- これを使えば、データ入力から書式設定まで全自動化が実現できる
最初はコードをコピー&ペーストして、nameやTrue/Falseを少し変えて試してみるのがおすすめです。手作業だった書式設定を自動化して、あなたのPythonライフをさらに快適なものにしてください!


コメント