Excel の帳票では、行に交互の背景色(別名「バンド表示」や「帯状表示」)を設定することがよくあります。
これは視覚的な整理手段として非常に有効で、行データを見やすくし、特に財務表、売上報告書、大規模なデータリストを扱う場合に有用です。
本記事では、Free Spire.XLS for Python を使って Excel に交互行色を設定する方法を解説します。
3 種類の実装方法を紹介し、それぞれの技術的な詳細、利点、適用シーンについても説明します。
依存ライブラリのインストール
pip install spire.xls.free
本文で使用するサンプル Excel は以下の通りです:
方法1:条件付き書式(Conditional Formatting)を使用
条件付き書式は、Excel が提供する動的書式機能で、セルの値や数式に基づいて自動的に書式を適用できます。
数式 MOD(ROW(),2) を使うことで行番号の偶奇を判定し、交互行色を実現できます。
from spire.xls import Workbook, Color, ConditionalFormatType
# 1. Excel ファイルを読み込み
workbook = Workbook()
workbook.LoadFromFile("Sample7.xlsx")
# 2. ワークシートとデータ範囲を取得
sheet = workbook.Worksheets.get_Item(0)
cellRange = sheet.Range.get_Item(3, 1, sheet.LastRow, sheet.LastColumn)
# 3. 条件付き書式オブジェクトを追加してデータ範囲に適用
formats = sheet.ConditionalFormats.Add()
formats.AddRange(cellRange)
# 4. 偶数行の条件付き書式を設定
conditional1 = formats.AddCondition()
conditional1.FormatType = ConditionalFormatType.Formula
conditional1.FirstFormula = "=MOD(ROW(),2)=0"
conditional1.BackColor = Color.get_LightGray()
# 5. 奇数行の条件付き書式を設定
conditional2 = formats.AddCondition()
conditional2.FormatType = ConditionalFormatType.Formula
conditional2.FirstFormula = "=MOD(ROW(),2)=1"
conditional2.BackColor = Color.get_LightPink()
# 6. 保存
workbook.SaveToFile("output/ConditionalFormatting.xlsx")
workbook.Dispose()
技術的詳細
-
Workbook:Excel ブックを表すクラス。
LoadFromFileで読み込み、SaveToFileで保存。 -
Worksheet(ワークシート):
workbook.Worksheets.get_Item(index)で取得。 -
Range(セル範囲):
sheet.Range.get_Item(startRow, startCol, endRow, endCol)で取得。 -
ConditionalFormats(条件付き書式コレクション):
Add()で書式ルールを追加。 -
ConditionalFormatType.Formula:数式で条件判定、
FirstFormulaに設定。 - BackColor:セルの背景色を設定。
結果例:
利点:
- 行の追加や並べ替え後も自動で適用される。
- 数式でより複雑なパターンも設定可能(例:3 行ごと、5 行ごと)。
- 元のセル内容や表構造に影響を与えない。
方法2:組み込みのテーブルスタイル(Table Styles)を使用
Excel の組み込みテーブルスタイルには、バンド表示があらかじめ設定されているものがあります。
Spire.XLS では ListObjects と BuiltInTableStyle を使って簡単に適用できます。
from spire.xls import Workbook, TableBuiltInStyles
# 1. Excel ファイルを読み込み
workbook = Workbook()
workbook.LoadFromFile("G:/Document/Sample7.xlsx")
# 2. ワークシートとデータ範囲を取得
sheet = workbook.Worksheets.get_Item(0)
cellRange = sheet.Range.get_Item(2, 1, sheet.LastRow, sheet.LastColumn)
# 3. 範囲をテーブルオブジェクトとして作成
table = sheet.ListObjects.Create("table", cellRange)
# 4. 組み込みテーブルスタイルを適用(バンド表示)
table.BuiltInTableStyle = TableBuiltInStyles.TableStyleMedium2
# 5. 保存
workbook.SaveToFile("output/TableStyle.xlsx")
workbook.Dispose()
技術的詳細
- ListObjects.Create(name, range):指定範囲をテーブルオブジェクトとして作成(Excel の「テーブルとして書式設定」に相当)。
- BuiltInTableStyle:テーブルのスタイルを設定。ヘッダーや境界線、交互行色が含まれる。
- TableBuiltInStyles:Spire.XLS が提供する組み込みスタイル列挙。簡単に呼び出せる。
結果例:
利点:
- 一行で美しいバンド表示のテーブルを作成可能。
- ヘッダー強調、境界線、交互行色が自動適用される。
- 行の追加時にも自動で色が更新される。
制限:既存の複雑な書式や結合セルには適用が制限される場合あり。
方法3:ループでカスタム行色を設定
各行をループで処理して Row.Style.Color を直接設定する方法です。
完全に自由な色指定や条件付き適用が可能で、カスタマイズ性が最も高い方法です。
from spire.xls import Workbook, Color
# 1. Excel ファイルを読み込み
workbook = Workbook()
workbook.LoadFromFile("G:/Document/Sample7.xlsx")
# 2. ワークシートを取得
sheet = workbook.Worksheets.get_Item(0)
# 3. 交互行の背景色を設定
for i in range(2, sheet.LastRow):
style = sheet.Rows.get_Item(i).Style
style.Color = Color.get_LightGray() if i % 2 == 0 else Color.get_LightSkyBlue()
# 4. 保存
workbook.SaveToFile("output/CustomStyle.xlsx")
workbook.Dispose()
技術的詳細
- Rows.get_Item(index):指定行を取得。
- Row.Style.Color:行全体のセルの背景色を設定。
-
ループロジック:
i % 2 == 0による偶奇判定で交互色を適用。
結果例:
利点:
- カスタマイズ性が最も高く、任意の色や条件を自由に設定可能。
- 表構造に依存せず、複雑な範囲でも適用できる。
制限:行の追加後は自動適用されないため、再実行が必要。
3 方法の比較
| 方法 | 技術原理 | 自動更新 | 柔軟性 | 適用シーン |
|---|---|---|---|---|
| 条件付き書式 | 数式で行番号を判定 | ✅ はい | ✅ 高 | 動的レポート、行の追加・並べ替えが多い場合 |
| テーブルスタイル | テーブルオブジェクトの組み込みスタイル | ✅ はい | ⚠️ 中 | データ全体の美化、簡単適用 |
| ループ設定 | 各行の Style.Color を直接設定 | ❌ いいえ | ✅ 最高 | 特殊ルールや部分的なフォーマット、一度きりの出力 |
まとめ
本記事では、Python を使って Excel の行に交互色(バンド表示/帯状表示)を設定する 3 つの方法を紹介しました:
- 条件付き書式:動的レポート向け、行追加時も自動で更新、柔軟性が高い。
- テーブルスタイル:簡単に美しいバンド表示を作成可能、操作がシンプル。
- ループ設定:完全カスタマイズ可能、複雑な条件や部分的適用に最適。
Workbook、Worksheet、Range、ConditionalFormats、ListObjects、Style.Color、BuiltInTableStyle などの主要クラスとプロパティを理解すれば、業務用途に応じた Excel 自動化と美化が容易になります。
より詳しいチュートリアルは Spire.XLS for Python 公式ガイド を参照してください。



