Pythonで Excelを操作するためのライブラリの「Openpyxl」を使って、画像を Excel ファイルに挿入する方法を紹介します。
画像の用意
今回は、クマさんのイラスト画像を Excelに挿入してみましょう。
素材の配布元 から画像をダウンロードして任意の場所に保存します。
もちろん、別の画像でもかまいません。。。
Excel に画像を挿入するコード
Openpyxlで Excelに画像を挿入する Pythonのコードは、次のようになります。
import openpyxl
from openpyxl.drawing.image import Image
## ブックの新規作成
workbook = openpyxl.Workbook()
## 1シート目を取得
worksheet = workbook.worksheets[0]
## C2セルの左上を基準に画像を挿入
img = Image('/path/to/kuma.png')
worksheet.add_image(img, 'C2')
## ブックの保存
workbook.save("/path/to/image.xlsx")
上のコードを実行すると、こんな感じで Excel に画像が挿入されます。
サイズを指定して画像を挿入する
画像サイズを指定して挿入する場合は、次のコードのように、Image
クラスの width
および height
プロパティを指定します。
import openpyxl
from openpyxl.drawing.image import Image
## ブックの新規作成
workbook = openpyxl.Workbook()
## 1シート目を取得
worksheet = workbook.worksheets[0]
## 画像ファイルの読み込み
img = Image('/path/to/kuma.png')
## Excelに挿入するときの画像サイズを指定
img.width = 150
img.height = 150
## C2セルの左上を基準に画像を挿入
worksheet.add_image(img, 'C2')
## ブックの保存
workbook.save("/path/to/image.xlsx")
コードを実行して出力された Excelファイルを見ると、画像が縮小されているのが分かります。
アスペクト比(縦横比)を維持して画像を縮小する
アスペクト比(縦横比)が異なる、サイズが事前に不明の画像を縮小して Excel に挿入する場合、予めアスペクト比を計算しておいて、それを元に画像を縮小することで、画像が変に間延びしたりする問題を回避できます。
import openpyxl
from openpyxl.drawing.image import Image
## ブックの新規作成
workbook = openpyxl.Workbook()
## 1シート目を取得
worksheet = workbook.worksheets[0]
## 画像ファイルの読み込み
img = Image('/path/to/kuma.png')
## 画像のアスペクト比を計算
## イメージ読みこみ直後の height, widthには、オリジナルの画像サイズが入っている
a = img.height / img.width
## 横が300pxになるように、縦のサイズをアスペクト比に従い計算
img.width = 300
img.height = int(300 * a)
## C2セルの左上を基準に画像を挿入
worksheet.add_image(img, 'C2')
## ブックの保存
workbook.save("/path/to/image.xlsx")
まとめ
Openpyxlで Excelに画像を挿入する方法を紹介してきました。
少ないコードでいろんな操作ができる Openpyxlは、やっぱり便利ですね。
0 件のコメント:
コメントを投稿