【openpyxl】エクセルに画像を貼り付け【Python初心者向けに解説】

スポンサードリンク
Python
過去の自分
過去の自分

既存のエクセルファイルに画像を貼り付けしたいんだけど、
openpyxlでそんなことできる?

今の自分
今の自分

できますよ!
では今回は、「openpyxlでエクセルファイルに画像を貼り付けする方法」
できるだけわかりやすく解説いたします。
また、「画像をリサイズして貼り付けする方法」も紹介いたしますので、
ぜひ最後まで読んでいってください。

著者情報
スポンサードリンク

openpyxlでエクセルファイルに画像を貼り付けする方法

「add_image」を使います。まずは全コードと実行結果をお見せします。
解説は後ほど行います。

全コード

既存のエクセルファイルである「input.xlsx」に画像「input_img.jpg」を貼り付けした例です。

import openpyxl
from openpyxl.drawing.image import Image

wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']

input_img = Image('C:/Utatane/input_img.jpg')
ws.add_image(input_img, 'B2')

wb.save('C:/Utatane/output.xlsx')

※画像の読み込み・貼り付け

input_img = Image('C:/Utatane/input_img.jpg')
ws.add_image(input_img, 'B2')

実行結果

実行結果画像

事前準備

  • openpyxlのインストール

既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。

openpyxlのインストール方法

openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。

pip install openpyxl

※openpyxlを使用したことがある場合は、このインストール作業は不要です。

インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。

解説

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

input_img = Image('C:/Utatane/input_img.jpg')
ws.add_image(input_img, 'B2')

上記コードにて、エクセルファイルに画像を貼り付けすることができます。
コードの7行目で貼り付けする画像を読み込み、8行目で貼り付けします。

では、コードの解説です。

画像の読み込み

input_img = Image('C:/Utatane/input_img.jpg')

まず新しい名前の変数を書いたら、「=(イコール)」を書きます。

今回はわかりやすく「input_img」という名前にしましたが、何でも構いません。
しかしながら、つけることができない名前があったり、注意すべきことがあります。
下記記事をご参考ください。

イコールの後ろに「Image()」を書きます。
()内には、「貼り付けする画像のアドレス」を記述してください。

「Image()」「I」大文字ですのでご注意ください。小文字にすると動きません。

アドレスはフルパス(フォルダパス/ファイル名)で指定するのが無難です。
フォルダパスは、ファイルが置いてあるフォルダを開き、アドレスバーからコピーできます。

フルパスの説明画像

アドレスをコードにコピペした後、「/」が「\」や「¥」になってしまっている場合は、「/」に変更してください。

画像を貼り付け

ws.add_image(input_img, 'B2')

まず「エクセルのワークシートが入った変数(今回はws)」を書き、続けて「.add_image()」を書きます。
()内には、「7行目で画像を読み込んだ変数」を書きます。
続けて「,(カンマ)」を書き、「画像を貼り付けたいセル名」を書きます。

セル名は「’(クォーテーション)」で囲ってください。

実行結果が下図です。

実行後画像

今回はB2セルを指定したため、B2セルに画像が貼り付けられているのがわかります。

スポンサードリンク

openpyxlで画像をリサイズして貼り付けする方法

前項で「エクセルに画像を貼り付けする方法」を解説いたしました。
しかしながら、画像が少し大きかったので、今度は小さくして貼りたいと思います。

画像のリサイズもopenpyxlでできます。
下記コードをご覧ください。

import openpyxl
from openpyxl.drawing.image import Image

wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']

input_img = Image('C:/Utatane/input_img.jpg')

input_img.width = 100
input_img.height = 100

ws.add_image(input_img, 'B2')

wb.save('C:/Utatane/output.xlsx')

9行目・10行目に注目です。

input_img.width = 100
input_img.height = 100

上記2行にて、画像のリサイズを行っています。

まず、「画像を読み込んだ変数」を書いたら、「.width」を書き、イコールを書きます。
右辺には、リサイズする数値(px)を書いてください。
これで「width(横幅)」のサイズを変更することができます。

同様に10行目で「height(高さ)」のサイズを変更しています。
実行してみましょう。

リサイズして貼り付けした画像

画像をリサイズして貼り付けることができました。

元画像のサイズがわからない場合やアスペクト比(縦横比)を変えたくない場合は、「Pillow」というライブラリと連携する必要があります。
下記記事をご参考ください。

スポンサードリンク

うまく動作しない場合の対処法

エラーが出る

No such file or directory: ○○

これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。

詳しい解説は、下記記事をご参考ください。

Permission denied: ○○

操作しようとしているファイルにアクセスできないというエラーです。
ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。

詳しい解説は、下記記事をご参考ください。

Worksheet ○○ does not exist

「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。

詳しい解説は、下記記事をご参考ください。

○○ is not defined

今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。

詳しい解説は、下記記事をご参考ください。

その他のエラー

その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。

スポンサードリンク

最後に

openpyxlでエクセルファイルに画像を貼り付けする方法を解説いたしました。

当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

挫折せずにPythonを独学で学習する方法は特におすすめです。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました