openpyxl NamedStyle で統一書式を一度に適用する方法

Excel シートのレイアウトを整える際、「フォント」「罫線」「塗りつぶし」などを毎回個別に設定すると作業が煩雑になりがちです。openpyxlNamedStyle を活用すると、よく使う書式の組み合わせをひとつにまとめ、対象セルへ一括で適用できます。本記事では、フォント+罫線 を組み合わせたスタイルを作成し、データ範囲へ設定する手順をご紹介いたします。


目次

前提環境

項目内容
Python3.10 以上
使用ライブラリopenpyxl ( pip install openpyxl )
サンプルファイルtask_list.xlsx
出力ファイルtask_list_styled.xlsx

サンプルコード

from openpyxl import load_workbook
from openpyxl.styles import Font, Border, NamedStyle, Side

# 1) ワークブックを読み込み
wb = load_workbook('task_list.xlsx')
ws = wb.active

# 2) NamedStyle を作成
tbl_style = NamedStyle(name='TableStyle')
tbl_style.font = Font(name='Calibri', size=12)

thin_side = Side(border_style='thin', color='000000')
tbl_style.border = Border(
    left=thin_side, right=thin_side,
    top=thin_side,  bottom=thin_side
)

# 3) データ範囲を定義(行 4 以降、列 B~E)
for row in ws.iter_rows(min_row=4, max_row=ws.max_row,
                        min_col=2, max_col=5):
    for cell in row:
        cell.style = tbl_style

# 4) 保存
wb.save('task_list_styled.xlsx')

コードの要点

ステップ解説
NamedStyle の作成name はブック内で一意となる任意の名称を付けます。
フォント設定Font(name='Calibri', size=12) で本文用の標準フォントを指定しています。
罫線設定Side(border_style='thin') を 4 辺へ適用し、表全体を枠線で囲みます。
セルへの割当てcell.style = tbl_style でフォントと罫線を同時に適用できます。

応用例

目的追加設定の例
見出し行を強調するheader_style.font = Font(bold=True, color='FFFFFF') とし、PatternFill で背景色を追加
数値列の書式を固定tbl_style.number_format = '#,##0' で 3 桁区切り表示
複数スタイルを登録NamedStyle を用途別に作成し、セルごとに使い分け

まとめ

  • NamedStyle を使えば、よく使う書式を一括管理でき、シート作成の手間とミスを削減できます。
  • 作成したスタイルはブック内で再利用でき、後から変更しても瞬時に全セルへ反映されます。
  • フォント・罫線・塗りつぶし・表示形式などを組み合わせることで、読みやすく統一感のあるレポートを簡単に作成できます。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次