openpyxl でセルのフォント書式を一括統一する方法(斜体・取り消し線・下線・縦位置も設定可能)

Excel ファイル内の見た目を整える際、セルごとにフォントを設定すると手作業が煩雑になりがちです。Python ライブラリ openpyxl を利用すれば、対象範囲を指定して フォント名・サイズ・色・太字・斜体・取り消し線・下線・縦位置 などをまとめて変更できます。


目次

事前準備

項目内容
Python 版3.9 以上
追加ライブラリopenpyxl(pip install openpyxl
入力ファイルsales_performance.xlsx
出力ファイルsales_performance_styled.xlsx

サンプルコード

from openpyxl import load_workbook
from openpyxl.styles import Font

# 1. ワークブックとワークシートを読み込み
wb_path = 'sales_performance.xlsx'
wb_src = load_workbook(wb_path)
ws_data = wb_src.active

# 2. 統一したいフォント書式を作成
common_font = Font(
    name='Yu Mincho',
    size=16,
    color='0066CC',          # 青系
    bold=True,
    italic=True,
    underline='single',
    strike=False,
    vertAlign=None           # 上付き:superscript / 下付き:subscript
)

# 3. 範囲指定(ここでは C3:G3)で書式を適用
for row in ws_data['C3':'G3']:
    for cell in row:
        cell.font = common_font

# 4. 保存
wb_src.save('sales_performance_styled.xlsx')

コード解説

説明
Font オブジェクトbold, italic, underline, strike, vertAlign などを同時に設定できます。
underline='single'下線を 1 本引きます。二重線にしたい場合は 'double' を指定します。
vertAlign=None上付きや下付きにする場合だけ 'superscript' または 'subscript' を指定します。
セル範囲ws_data['C3':'G3'] のようにコロン区切りで一括指定が可能です。複数行・複数列にも対応します。

主な Font プロパティ一覧

プロパティ値の例効果
name'Calibri'フォント名
size14フォントサイズ(ポイント)
color'FF0000'16 進数で RGB 指定
boldTrue / False太字
italicTrue / False斜体
underline'single'下線('double' も可)
strikeTrue取り消し線
vertAlign'superscript'上付き(下付きは 'subscript'

応用アイデア

目的実装ポイント
データ行すべてに交互色を付けるPatternFill と行番号の偶奇判定で塗り分けが可能です。
条件に応じて書式を切り替えるif cell.value > ...: で分岐し、複数種類の Font を使い分けます。
シート全体の既存書式をリセット既存セルをループし、cell.font = Font() でデフォルトに戻します。

まとめ

  • Font オブジェクト を 1 つ定義しておけば、複数セルへ効率的に書式を適用できます。
  • 下線・取り消し線・斜体・縦位置なども同時に指定できるため、Excel 上での手作業を大幅に削減できます。
  • openpyxl はセル範囲を指定するだけで一括操作が行えるため、レポートの統一感を高めたい場面に最適です。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次