Excel ワークシートに画像を挿入または削除することで、スプレッドシートの視覚的な魅力を高めることができます。ロゴ、グラフ、図表などの画像を取り入れることで、より見やすく情報を伝えやすい資料を作成できます。また、Excel では画像のリサイズ、移動、削除などの操作も可能です。
本記事では、Spire.XLS for Python を使用して、Python で Excel に画像をプログラムで挿入・削除する方法をご紹介します。
Spire.XLS for Python のインストール
この操作には、Spire.XLS for Python と plum-dispatch v1.7.4 が必要です。これらは、Spire.XLS for Python の公式ウェブサイトから手動でダウンロードするか、以下の pip コマンドでインストールできます。
pip install Spire.XLS
Python で特定の Excel セルに画像を挿入する
特定のセルに画像を挿入するには、Worksheet.Pictures.Add(int topRow, int leftColumn, Image image) メソッドを使用します。以下の手順で実装できます。
- Workbook オブジェクトを初期化します。
- Workbook.Worksheets[sheetIndex] プロパティを使って対象のワークシートを取得します。
- Worksheet.Pictures.Add() メソッドを使って指定セルに画像を挿入し、ExcelPicture オブジェクトを取得します。
- ExcelPicture オブジェクトのプロパティを使って、画像の幅・高さや、セルとの余白(マージン)を設定します。
- Workbook.SaveToFile() メソッドで Excel ファイルとして保存します。
- Python
from spire.xls import Workbook, ExcelVersion
# Workbook オブジェクトを作成します
workbook = Workbook()
# 最初のワークシートを取得します
sheet = workbook.Worksheets[0]
# 指定したセルに画像を追加します
imgPath = "Logo.png"
picture = sheet.Pictures.Add(1, 3, imgPath)
# 画像の幅と高さを設定します
picture.Width = 150
picture.Height = 150
# セルが画像を収められるように列の幅と行の高さを調整します
sheet.Columns[2].ColumnWidth = 25
sheet.Rows[0].RowHeight = 135
# セルの境界線と画像との間隔を設定します
picture.LeftColumnOffset = 90
picture.TopRowOffset = 20
# ファイルに保存します
workbook.SaveToFile("output/Excelに画像を挿入.xlsx", ExcelVersion.Version2013)
workbook.Dispose()
Python で Excel ワークシート内の画像を削除する
Excel ワークシート内の画像は、Worksheet.Pictures[imgIndex].Remove() メソッドを使用して削除できます。すべての画像を削除したい場合は、forループで画像を一つずつ削除します。以下がその手順です。
- Workbook オブジェクトを作成します。
- Workbook.LoadFromFile() メソッドで Excel ファイルを読み込みます。
- Workbook.Worksheets[sheetIndex] プロパティを使用して対象のワークシートを取得します。
- Worksheet.Pictures[imgIndex].Remove() メソッドを使って画像を削除します。ループ処理で複数の画像を削除可能です。
- Workbook.SaveToFile() メソッドで編集内容を別の Excel ファイルとして保存します。
- Python
from spire.xls import Workbook
# Workbook オブジェクトを作成します
workbook = Workbook()
# Excel ファイルを読み込みます
workbook.LoadFromFile("output/Excelに画像を挿入.xlsx")
# 最初のワークシートを取得します
sheet = workbook.Worksheets[0]
# ワークシート内のすべての画像を削除します
for i in range(sheet.Pictures.Count - 1, -1, -1):
sheet.Pictures[i].Remove()
# 特定の画像を削除する場合
# sheet.Pictures[imgIndex].Remove()
# ファイルに保存します
workbook.SaveToFile("output/DeleteImage.xlsx")
workbook.Dispose()
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。