初心者でも簡単!openpyxlのTableStyleInfoを使ったExcelテーブルの書式設定入門

openpyxl

PythonでExcelファイルを操作できるopenpyxl、とても便利ですよね。「データの入力や計算は自動化できたけど、テーブルの見た目を整えるのは結局手作業…」そんな風に感じていませんか?

この記事は、そんなお悩みを持つ初心者の方に向けて、openpyxlTableStyleInfoという機能を使った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の各スイッチをTrueFalseに切り替えるだけで、簡単にデザインをカスタマイズできます。

まとめ

今回は、openpyxlTableStyleInfoを使ってExcelテーブルの書式設定を自動化する方法を、初心者向けに解説しました。

  • TableStyleInfoはExcelの「テーブルデザイン」機能をコードで操作するもの
  • nameプロパティで好きなデザイン名を選べる
  • show...系のプロパティ(スイッチ)で、列の強調や縞模様をON/OFFできる
  • これを使えば、データ入力から書式設定まで全自動化が実現できる

最初はコードをコピー&ペーストして、nameTrue/Falseを少し変えて試してみるのがおすすめです。手作業だった書式設定を自動化して、あなたのPythonライフをさらに快適なものにしてください!

コメント

タイトルとURLをコピーしました