【Python】Excelに貼り付けられた画像を一括で抽出するコード【D&D対応】

本ブログはアフィリエイト広告を利用しています

WEB / アプリ
WEB / アプリ
この記事は約3分で読めます。

とっちゃん@nyanco! です。

今回はExcelに貼り付けられた画像を一括で抽出するコードの共有です。

肉玉にゃんこ

ドラッグ&ドロップ対応で簡単に使えますにゃ~

スポンサーリンク

コードの動作環境

  • OS:Windows10 ※macOSでは未確認
  • Pythonバージョン:3.11.2
  • 必要ライブラリ:os sys openpyxl

コード作成のきっかけ

とある日の業務中、Excelファイルの中に大量に貼り付けられた画像データを抽出する必要に迫られまして。

Excelは「ファイル」→「エクスポート」→「ファイルの種類を変更」→「名前を付けて保存」から「Web ページ」として保存すると別フォルダに画像抽出できるはずなんですが、なぜか何度やっても「ファイルを保存できませんでした。」というエラーが。。

肉玉にゃんこ

手作業で画像を1つ1つ選んで「図として保存」なんてやってられませんにゃ~

ということでPythonの出番です!

本記事で紹介するコードを使うとExcelファイルを.pyファイルへドラッグ&ドロップするだけで一瞬でフォルダに画像ファイルを集めてくれます。

肉玉にゃんこ

ドラッグ&ドロップしたExcelファイルがある同じディレクトリに「images」というフォルダが自動生成されてそこに画像ファイルが集められますにゃ〜

Excelに配置された画像を一括で抽出するPythonコード

早速ですがコードはこちら!

import openpyxl
import os
import sys

# 引数で渡されたファイルパスを取得
file_path = sys.argv[1]

# Excelファイルを開く
wb = openpyxl.load_workbook(file_path)

# アクティブなワークシートを取得
sheet = wb.active

# 保存用のフォルダを作成
if not os.path.exists('images'):
    os.makedirs('images')

# すべての画像を抽出してファイルに保存
for i, image in enumerate(sheet._images, 1):
    # 画像ファイルのパスを生成
    image_path = os.path.join('images', f'image{i}.jpg')

    # 画像をファイルに保存
    with open(image_path, 'wb') as f:
        f.write(image._data())

    # 保存した画像のパスを表示
    print(f'Saved {image_path}')

コードはChatGPTで作成したものを少しカスタマイズしています。

▼サクッとすぐに使えるように下記より.pyファイルのダウンロードも可能です(zip圧縮しています)。

→Excelに配置された画像を一括抽出するPythonコードをダウンロード

おわりに

本記事がどなたかの参考になれば幸いです。

今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧

コメント