openpyxl でセルの背景色と文字配置を整え、表を視認性の高いレポートに仕上げる方法

Python と openpyxl を用いると、Excel ワークシートの色や文字の配置を一括で調整でき、読みやすいレイアウトを短時間で作成できます。本記事では次のポイントを解説いたします。

  1. 背景色の設定PatternFill で soliddarkHorizontaldarkVertical などの塗りつぶしを指定
  2. 文字配置の統一Alignment で左右・上下方向をまとめて整列
  3. 実用サンプルコード ― 見出し行のみ色付け+中央揃えにする例

目次

動作環境

項目内容
Python3.9 以上
ライブラリopenpyxl(pip install openpyxl
入力ファイルsales_report.xlsx
出力ファイルsales_report_styled.xlsx

サンプルコード

from openpyxl import load_workbook
from openpyxl.styles import Alignment, PatternFill

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

# 2. 背景色と配置を定義
header_fill = PatternFill(
    fill_type='solid',      # solid / darkHorizontal / darkVertical など
    fgColor='4472C4'        # 暗めのブルー(RGB 16 進数)
)

center_align = Alignment(
    horizontal='center',    # left / center / right
    vertical='center'       # top / center / bottom
)

# 3. 見出し行(C3:G3)に書式を適用
for row in ws['C3':'G3']:
    for cell in row:
        cell.fill = header_fill
        cell.alignment = center_align

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

コードの解説

処理説明
PatternFillfill_type には solid(単色塗りつぶし)のほか、縞模様の darkHorizontaldarkVertical も指定できます。
fgColor16 進数 6 桁で RGB を表します。上例ではブルー系の #4472C4 を使用しています。
Alignment横方向 (horizontal) と縦方向 (vertical) を同時に設定できます。wrap_text=True を追加すると、長文でもセル内で自動改行されます。
セル範囲の指定ws['C3':'G3'] の書式を変更すると、表の見出しだけを一括で整えられます。

背景色と文字配置のバリエーション

目的設定値
強調行をグレーにする小計・合計行fgColor='BFBFBF', fill_type='solid'
特定列をハイライト重要指標列fgColor='FFC000', fill_type='solid'
斜めストライプデザイン性を高めるfill_type='darkDiagonal'
左揃え × 上揃え注釈列などAlignment(horizontal='left', vertical='top')

まとめ

  • PatternFill を使えば 単色だけでなくストライプや格子 も簡単に表現できます。
  • Alignment左右・上下両方 を一度に設定でき、コードの可読性が向上します。
  • 一括処理により 手動操作のミスを防止 し、レポート作成を効率化できます。

表の書式を制御することで、閲覧者がデータを直感的に理解しやすくなります。ぜひ業務報告書やダッシュボード生成フローに組み込んでみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

目次