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は 左右・上下両方 を一度に設定でき、コードの可読性が向上します。- 一括処理により 手動操作のミスを防止 し、レポート作成を効率化できます。
表の書式を制御することで、閲覧者がデータを直感的に理解しやすくなります。ぜひ業務報告書やダッシュボード生成フローに組み込んでみてください。
