0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python を使って Excel の行に交互の背景色(バンド表示/帯状表示)を設定する

Posted at

Excel の帳票では、行に交互の背景色(別名「バンド表示」や「帯状表示」)を設定することがよくあります。
これは視覚的な整理手段として非常に有効で、行データを見やすくし、特に財務表、売上報告書、大規模なデータリストを扱う場合に有用です。

本記事では、Free Spire.XLS for Python を使って Excel に交互行色を設定する方法を解説します。
3 種類の実装方法を紹介し、それぞれの技術的な詳細、利点、適用シーンについても説明します。


依存ライブラリのインストール

pip install spire.xls.free

本文で使用するサンプル Excel は以下の通りです:

2025-10-17_175041.png


方法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:セルの背景色を設定。

結果例:

2025-10-17_175233.png

利点:

  • 行の追加や並べ替え後も自動で適用される。
  • 数式でより複雑なパターンも設定可能(例:3 行ごと、5 行ごと)。
  • 元のセル内容や表構造に影響を与えない。

方法2:組み込みのテーブルスタイル(Table Styles)を使用

Excel の組み込みテーブルスタイルには、バンド表示があらかじめ設定されているものがあります。
Spire.XLS では ListObjectsBuiltInTableStyle を使って簡単に適用できます。

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 が提供する組み込みスタイル列挙。簡単に呼び出せる。

結果例:

2025-10-17_175327.png

利点:

  • 一行で美しいバンド表示のテーブルを作成可能。
  • ヘッダー強調、境界線、交互行色が自動適用される。
  • 行の追加時にも自動で色が更新される。

制限:既存の複雑な書式や結合セルには適用が制限される場合あり。


方法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 による偶奇判定で交互色を適用。

結果例:

2025-10-17_175425.png

利点:

  • カスタマイズ性が最も高く、任意の色や条件を自由に設定可能。
  • 表構造に依存せず、複雑な範囲でも適用できる。

制限:行の追加後は自動適用されないため、再実行が必要。


3 方法の比較

方法 技術原理 自動更新 柔軟性 適用シーン
条件付き書式 数式で行番号を判定 ✅ はい ✅ 高 動的レポート、行の追加・並べ替えが多い場合
テーブルスタイル テーブルオブジェクトの組み込みスタイル ✅ はい ⚠️ 中 データ全体の美化、簡単適用
ループ設定 各行の Style.Color を直接設定 ❌ いいえ ✅ 最高 特殊ルールや部分的なフォーマット、一度きりの出力

まとめ

本記事では、Python を使って Excel の行に交互色(バンド表示/帯状表示)を設定する 3 つの方法を紹介しました:

  1. 条件付き書式:動的レポート向け、行追加時も自動で更新、柔軟性が高い。
  2. テーブルスタイル:簡単に美しいバンド表示を作成可能、操作がシンプル。
  3. ループ設定:完全カスタマイズ可能、複雑な条件や部分的適用に最適。

WorkbookWorksheetRangeConditionalFormatsListObjectsStyle.ColorBuiltInTableStyle などの主要クラスとプロパティを理解すれば、業務用途に応じた Excel 自動化と美化が容易になります。

より詳しいチュートリアルは Spire.XLS for Python 公式ガイド を参照してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?