エクセルは主に表計算データを扱うためのツールです。時には、ワークシートに視覚効果を加え、レポートの魅力を高めるために、Excelで画像を挿入、編集、管理する必要があるかもしれません。
この記事では、Pythonを使用してExcelで画像を操作する方法について、以下の4つの基本的な例を含めて詳しく説明します:
Excelファイルを扱うためのPythonライブラリ
Python Excel API – Spire.XLS for Python
まず、サードパーティのPythonライブラリSpire.XLS for Pythonを以下のpipコマンドでインストールします。
pip install Spire.XLS
あるいは、以下のリンクから製品パッケージをダウンロードし、ローカルパスからインストールすることもできます。
PythonでExcelに画像を挿入する
Spire.XLSライブラリを使用して、指定したセルに画像を挿入し、画像のサイズやその他のプロパティを設定することができます。主な手順は以下の通りです:
1. Workbook
オブジェクトを作成し、指定されたワークシートを取得する;
2. Worksheet.Pictures.Add(int topRow, int leftColumn, Image image)
メソッドを使用して、ワークシートの指定されたセルに画像を挿入します;
3. ExcelPicture
クラスのプロパティを使用して、画像の幅、高さ、画像とセルの境界線の間の距離を設定します;
4. SaveToFile()
メソッドを使用してExcelファイルを保存します。
Pythonコード:
from spire.xls import *
from spire.xls.common import *
# Workbook オブジェクトの作成
workbook = Workbook()
# 最初のワークシートを取得する
sheet = workbook.Worksheets[0]
# 指定したセル(ここでは1行2列目、すなわちセルB1)に画像を挿入する
picture = sheet.Pictures.Add(1, 2, "sample.png")
# 画像の幅と高さを設定する
picture.Width = 120
picture.Height = 120
# 画像に合わせて列の幅と行の高さを調整する
sheet.Columns[1].ColumnWidth = 20
sheet.Rows[0].RowHeight = 110
# 画像とセルの境界線との距離を設定する
picture.LeftColumnOffset = 90
picture.TopRowOffset = 20
# ファイルの保存
workbook.SaveToFile("InsertImage.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
PythonでExcelの画像を置換する
エクセルの元画像を新しい画像に置き換えるには、以下の手順を参照してください:
1. Excelファイルを読み込み、指定したワークシートを取得する;
2. Worksheet.Pictures[]
プロパティを使用して、ワークシート内の指定された画像を取得します;
3. 新しい画像をロードし、ExcelPicture.Picture
プロパティを通して指定された画像を新しい画像に置き換える;
4. SaveToFile()
メソッドを使用して、Excel ファイルを保存します。
Pythonコード:
from spire.xls import *
from spire.xls.common import *
# エクセル文書を読み込む
workbook = Workbook()
workbook.LoadFromFile ("InsertImage.xlsx")
# 最初のワークシートを取得する
sheet = workbook.Worksheets[0]
# ワークシートの最初の画像を取得する
excelPicture = sheet.Pictures[0]
# 画像を置き換える
excelPicture.Picture = Image.FromFile("pic.jpg")
# ファイルの保存
workbook.SaveToFile("ReplaceImage.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
PythonでExcelから画像を抽出する
Spire.XLS for Python ライブラリは、Excel 文書から画像を読み取り、指定したファイルパスに保存することもできます。手順は以下の通りです:
1. Excelファイルを読み込み、指定したワークシートを取得する;
2. ワークシート内のすべての画像をループする;
3. ExcelPicture.Picture.Save()
メソッドを呼び出して、Excelワークシートから画像を取り出す。
Pythonコード:
from spire.xls import *
from spire.xls.common import *
# エクセル文書を読み込む
workbook = Workbook()
workbook.LoadFromFile("icons.xlsx")
# 最初のワークシートを取得する
sheet = workbook.Worksheets[0]
# ワークシート内のすべての画像を取得する
for i in range(sheet.Pictures.Count - 1, -1, -1):
pic = sheet.Pictures[i]
# 画像を保存する
pic.Picture.Save("ExtractImages\\Img-{0:d}.png".format(i), ImageFormat.get_Png())
workbook.Dispose()
PythonでExcelから画像を削除
Worksheet.Pictures[imgIndex].Remove()
メソッドを使用すると、指定した画像をインデックスごとに削除することができます。Excelですべての画像を削除するには、各画像を繰り返し処理して削除します。下記はサンプルコードです:
from spire.xls import *
from spire.xls.common import *
# エクセル文書を読み込む
workbook = Workbook()
workbook.LoadFromFile("icons.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("DeleteImages.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
上記の例は、Pythonを使ってExcelで画像を挿入、置換、抽出、削除するスキルや、基本的な画像設定をマスターするのに役立ちます。もしPython APIを使ってExcelでできることにもっと興味があれば、以下のサイトでいくつかのデモを見ることができます: