
openpyxlでグラフを削除する方法
Excelファイルに自動でグラフを挿入できるopenpyxlは非常に便利ですが、不要になったグラフを削除したい場面もあります。
本記事では、openpyxlで作成したグラフを削除する方法について、初心者の方にも分かりやすく、実践的なコード付きで解説します。
以下のようなニーズをお持ちの方におすすめです:
- ✔️ 特定のグラフだけをピンポイントで削除したい
- ✔️ ファイル内のすべてのグラフを一括で削除したい
グラフ削除の基本ステップ
openpyxlでは、ワークシート内のグラフは_chartsというリストで管理されています。
グラフを削除するには、このリストから対象のグラフを取り除きます。
削除前
削除後
手順は以下の通りです:
- 1. Excelファイルを読み込む
- 2. 対象のシートを取得する
- 3. 削除したいグラフを_chartsから削除する
- 4. ファイルを保存する
特定のグラフを削除する方法
条件(タイトル)で特定して削除する
グラフが複数存在する場合、削除したいグラフを条件で特定し、remove()で削除することができます。以下は、タイトルが「売上推移」のグラフを削除する例です。
from openpyxl import load_workbook
# Excelファイルを読み込む
wb = load_workbook("openpyxl_chart_sample.xlsx")
ws = wb.active
# タイトルが「売上推移」のグラフを削除
for chart in ws._charts:
if chart.title == "売上推移":
ws._charts.remove(chart)
print("タイトルが『売上推移』のグラフを削除しました。")
break
# ファイルを保存
wb.save("openpyxl_chart_sample.xlsx")
インデックスで指定して削除する
削除したいグラフがリストの何番目にあるかが分かっている場合は、remove()に_chartsリスト内のインデックスを指定して削除することも可能です。以下は、最初のグラフ(インデックス0)を削除する例です。
from openpyxl import load_workbook
wb = load_workbook("openpyxl_chart_sample.xlsx")
ws = wb.active
# 最初のグラフを削除
if ws._charts:
target_chart = ws._charts[0]
ws._charts.remove(target_chart)
print("インデックス0のグラフを削除しました。")
else:
print("グラフが見つかりません。")
wb.save("openpyxl_chart_sample.xlsx")
すべてのグラフを削除する方法
ファイル内のすべてのグラフを一括で削除したい場合は、_charts.clear()を使用します。
from openpyxl import load_workbook
wb = load_workbook("openpyxl_chart_sample.xlsx")
ws = wb.active
# すべてのグラフを削除
if ws._charts:
ws._charts.clear()
print("すべてのグラフを削除しました。")
else:
print("グラフは存在しません。")
wb.save("openpyxl_chart_sample.xlsx")
公式ドキュメント
openpyxl.chart.reader — openpyxl 3.1.3 documentation
コメント