PythonでExcelに画像を簡単に埋め込む方法

Python

PythonでEXCELに画像を埋め込むには?

業務プログラムを作成時にEXCELへ画像を埋め込みしたい場合があります。
本記事では、PythonでEXCELを開いて画像を埋め込みする方法を紹介します。

事前準備

サンプルコード実行用にtestexcel.zipファイルを以下からダウンロードします。

ダウンロード後は以下の図のようにCドライブにtestexcelというフォルダを作成し、その中にファイルをコピーしてください。

EXCELに画像を埋め込むサンプルコード

次に、EXCELに画像を埋め込むサンプルコードを紹介します。

# pip install openpyxl
import openpyxl
from openpyxl.drawing.image import Image
#pip install pywin32
import win32com.client

def insert_image(excel_path, image_path, cell_position, image_width, image_height):
    """
    指定されたExcelファイルに画像を埋め込み、画像の大きさを調整する関数。

    Args:
        excel_path (str): Excelファイルのパス。
        image_path (str): 埋め込む画像のパス。
        cell_position (str): 画像を挿入するセルの位置(例: 'A1')。
        image_width (int): 画像の幅(ピクセル単位)。
        image_height (int): 画像の高さ(ピクセル単位)。

    Returns:
        None: 
    """
    # Excelファイルをロード
    workbook = openpyxl.load_workbook(excel_path)
    
    # アクティブなシートを取得
    sheet = workbook.active
    
    # 画像をロード
    img = Image(image_path)

    # 画像のサイズを設定
    img.width, img.height = image_width, image_height
    
    # 画像を指定されたセル位置に挿入
    sheet.add_image(img, cell_position)
    
    # 変更をファイルに保存
    workbook.save(excel_path)





##############################################################
# 関数のテスト
if __name__ == "__main__":

    # 埋め込み先EXCELと画像ファイルの指定
    excelfile = 'c:\\testexcel\\chingin_template.xlsx'
    imagefile = 'c:\\testexcel\\qrcode.png'

    # 画像を埋め込む
    insert_image(excelfile,imagefile , 'G1', 80, 80)

    # EXCELを開く ※手動で開く場合にはコメントしてください。
    # Excel アプリケーションを起動
    excel = win32com.client.Dispatch("Excel.Application")

    # Excel を画面に表示
    excel.Visible = True

    # ワークブックを開く
    workbook = excel.Workbooks.Open(excelfile)

サンプルを実行する前に

openpyxlとpywin32のインストールが必要ですのでインストールしていない場合には対応してください。

※画像埋め込み後のEXCELを自動で開く必要がない場合にはpywin32は不要です。

pip install openpyxl
pip install pywin32

実行結果

左図の元EXCELに右図のようにQRコード画像が埋め込みされます。

最後に

以上がPythonでEXCELへ画像を埋め込む方法です。

画像を埋め込むことによりQRコード画像やバーコードをEXCELに配置して承認行為のため書類番号を読み込ませて手入力軽減や、請求書への会社ロゴや押印が実現できます。

EXCELテンプレート帳票を作成して印刷するという内容も記事にしていますので、興味のある方はこちらも参照ください。

コメント

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