Python と openpyxl を用いると、Excel ワークシートの色や文字の配置を一括で調整でき、読みやすいレイアウトを短時間で作成できます。本記事では次のポイントを解説いたします。
- 背景色の設定 ―
PatternFill
でsolid
、darkHorizontal
、darkVertical
などの塗りつぶしを指定 - 文字配置の統一 ―
Alignment
で左右・上下方向をまとめて整列 - 実用サンプルコード ― 見出し行のみ色付け+中央揃えにする例
目次
動作環境
項目 | 内容 |
---|---|
Python | 3.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')
コードの解説
処理 | 説明 |
---|---|
PatternFill | fill_type には solid (単色塗りつぶし)のほか、縞模様の darkHorizontal や darkVertical も指定できます。 |
fgColor | 16 進数 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
は 左右・上下両方 を一度に設定でき、コードの可読性が向上します。- 一括処理により 手動操作のミスを防止 し、レポート作成を効率化できます。
表の書式を制御することで、閲覧者がデータを直感的に理解しやすくなります。ぜひ業務報告書やダッシュボード生成フローに組み込んでみてください。