今回は実用的な応用編として、条件付き書式とグラフ作成の方法を紹介します。これらを活用すれば、Excelファイルをより動的かつ視覚的に活用できるようになります!
1. 条件付き書式の適用
条件付き書式は、セルの値に応じてフォーマットを動的に変更する機能です。OpenPyXLを使うと、Pythonでこれを簡単に設定できます。
条件付き書式の基本例
以下の例では、特定の範囲のセルで値が50以上のものを赤い背景色に変更します。
from openpyxl import Workbook
from openpyxl.styles import PatternFill
from openpyxl.formatting.rule import CellIsRule
# 新しいExcelファイルを作成
workbook = Workbook()
sheet = workbook.active
# サンプルデータを入力
data = [10, 20, 50, 75, 30]
for i, value in enumerate(data, start=1):
sheet[f"A{i}"] = value
# 条件付き書式を設定
red_fill = PatternFill(start_color="FF0000", end_color="FF0000", fill_type="solid")
rule = CellIsRule(operator="greaterThanOrEqual", formula=["50"], fill=red_fill)
# 条件付き書式を適用する範囲を指定
sheet.conditional_formatting.add("A1:A5", rule)
# ファイルを保存
workbook.save("conditional_formatting.xlsx")
print("条件付き書式を適用したExcelファイルを保存しました")

ポイント
PatternFill
: セルの背景色を設定します。CellIsRule
: 特定の条件(例:値が50以上)を指定します。conditional_formatting.add
: 条件付き書式を適用する範囲を指定します。
2. グラフの作成
次に、OpenPyXLを使ってExcelファイルにグラフを追加する方法を解説します。以下は、棒グラフを作成する例です。
グラフの基本例
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
# 新しいExcelファイルを作成
workbook = Workbook()
sheet = workbook.active
# サンプルデータを入力
data = [
["Month", "Sales"],
["January", 100],
["February", 120],
["March", 150],
["April", 130]
]
for row in data:
sheet.append(row)
# グラフを作成
chart = BarChart()
chart.title = "Monthly Sales"
chart.x_axis.title = "Month"
chart.y_axis.title = "Sales"
# データ範囲を指定
data_ref = Reference(sheet, min_col=2, min_row=2, max_row=5, max_col=2)
categories_ref = Reference(sheet, min_col=1, min_row=2, max_row=5)
# データとカテゴリをグラフに追加
chart.add_data(data_ref, titles_from_data=True)
chart.set_categories(categories_ref)
# シートにグラフを挿入
sheet.add_chart(chart, "E5")
# ファイルを保存
workbook.save("bar_chart.xlsx")
print("グラフを作成したExcelファイルを保存しました")

ポイント
BarChart
: 棒グラフを作成するクラスです。他にもLineChart
(折れ線グラフ)やPieChart
(円グラフ)などがあります。Reference
: グラフのデータ範囲やカテゴリ範囲を指定します。add_chart
: グラフをシートに挿入します。
3. 応用例:条件付き書式 + グラフ
以下は、条件付き書式とグラフを組み合わせた実例です。
from openpyxl import Workbook
from openpyxl.styles import PatternFill
from openpyxl.formatting.rule import CellIsRule
from openpyxl.chart import BarChart, Reference
# 新しいExcelファイルを作成
workbook = Workbook()
sheet = workbook.active
# サンプルデータを入力
data = [
["Month", "Sales"],
["January", 100],
["February", 120],
["March", 150],
["April", 130]
]
for row in data:
sheet.append(row)
# 条件付き書式を設定
red_fill = PatternFill(start_color="FF9999", end_color="FF9999", fill_type="solid")
rule = CellIsRule(operator="greaterThanOrEqual", formula=["130"], fill=red_fill)
sheet.conditional_formatting.add("B2:B5", rule)
# グラフを作成
chart = BarChart()
chart.title = "Monthly Sales with Conditional Formatting"
chart.x_axis.title = "Month"
chart.y_axis.title = "Sales"
data_ref = Reference(sheet, min_col=2, min_row=2, max_row=5, max_col=2)
categories_ref = Reference(sheet, min_col=1, min_row=2, max_row=5)
chart.add_data(data_ref, titles_from_data=True)
chart.set_categories(categories_ref)
sheet.add_chart(chart, "E5")
# ファイルを保存
workbook.save("conditional_formatting_with_chart.xlsx")
print("条件付き書式とグラフを組み合わせたExcelファイルを保存しました")

4. まとめ
条件付き書式やグラフ作成は、OpenPyXLの中でも特に強力な機能です。これらを組み合わせることで、データを視覚的に強調し、分析作業を効率化できます。ぜひ、自分のデータに応用してみてください!