Excelのファイルを順番にjpegにするPython

  • URLをコピーしました!
目次

プログラムの内容

このPythonプログラムは、ユーザーが選択したExcelファイル内に貼り付けられた全ての画像を一括でJPEG形式で保存するデスクトップアプリケーションです。主な機能は、Excelファイルから画像の抽出とJPEG形式での保存です。

機能概要

  • Excelファイルの選択: ユーザーがグラフィカルなインターフェースを通じてExcelファイルを選択します。
  • 画像の抽出: 選択されたExcelファイルから全ての画像を抽出します。
  • JPEG形式での保存: 抽出した画像をJPEG形式で指定された出力フォルダに保存します。
  • ファイル名の連番: 保存される画像のファイル名は「image001」から始まる連番となります。

事前準備

このプログラムを実行する前に、openpyxlPillowライブラリがPython環境にインストールされている必要があります。これらは、Excelファイルの読み込みと画像の処理に必要です。

ソースコード

import openpyxl
from openpyxl.drawing.image import Image as OpenpyxlImage
from PIL import Image
from tkinter import Tk, filedialog
import os

def save_images_from_excel():
    Tk().withdraw()  # Tkinterダイアログの準備
    excel_file_path = filedialog.askopenfilename(title="Excelファイルを選択してください", filetypes=(("Excel files", "*.xlsx"), ("All files", "*.*")))
    if not excel_file_path:
        print("ファイルが選択されませんでした。")
        return

    save_folder_path = filedialog.askdirectory(title="保存先フォルダを選択してください")
    if not save_folder_path:
        print("フォルダが選択されませんでした。")
        return

    wb = openpyxl.load_workbook(excel_file_path, data_only=True)
    image_count = 0

    for ws in wb.worksheets:
        for drawing in ws._images:
            if isinstance(drawing, OpenpyxlImage):
                img = Image.open(drawing.ref)
                if img.mode == "RGBA":
                    img = img.convert("RGB")
                file_name = f"image{image_count + 1:03}.jpeg"
                img.save(os.path.join(save_folder_path, file_name))
                image_count += 1

    print(f"{image_count}個の画像を保存しました。")

if __name__ == "__main__":
    save_images_from_excel()

使い方

  1. ソースコードを.pyファイルとして保存し、Python環境で実行します。
  2. 実行するとファイル選択ダイアログが表示されるので、画像を抽出したいExcelファイルを選択します。
  3. 次にフォルダ選択ダイアログが表示されるので、画像を保存したい出力フォルダを選択します。
  4. プログラムが全ての画像をJPEG形式で保存し終えると、完了メッセージが表示されます。

雑記

仕事上手順書とかを良く作製するのだけれども、スクリーンショットを撮っていちいち保存するのがめんどくさくてExcelに貼り付けるといったことを良くやります。

貼り付けるのはいいけれどもその後jpegに保存し直すのがめんどくさくて、一括で何とかしたいなぁと思ってChatGPTにプログラムを書かせました。

まあそもそもスクリーンショット用のソフトを使えよという話ではありますが、そこまでするのもめんどくさいんだよなぁというときに使います。

created by Rinker
¥3,234 (2024/04/30 08:13:00時点 Amazon調べ-詳細)
よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

どうもZuxikkuです。
日本語だとズィックだとかジックって呼ばれています。
外国の方だとズクシーとか。ガジェットとか新しいもの大好き。

コメント

コメントする

CAPTCHA


目次