1
0

PythonでExcelに画像を挿入、置換、抽出、削除する

Posted at

エクセルは主に表計算データを扱うためのツールです。時には、ワークシートに視覚効果を加え、レポートの魅力を高めるために、Excelで画像を挿入、編集、管理する必要があるかもしれません。
この記事では、Pythonを使用してExcelで画像を操作する方法について、以下の4つの基本的な例を含めて詳しく説明します:

Excelファイルを扱うためのPythonライブラリ

:pushpin: 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()

ExcelImage.png

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()

ReplaceExcelImage.png

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()

ExtractExcelImage.png

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()

DeleteExcelImage.png


上記の例は、Pythonを使ってExcelで画像を挿入、置換、抽出、削除するスキルや、基本的な画像設定をマスターするのに役立ちます。もしPython APIを使ってExcelでできることにもっと興味があれば、以下のサイトでいくつかのデモを見ることができます:

1
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
1
0