Python

Pythonを使って複数枚の画像を自動でExcelに張り付ける方法を徹底解説!【図解あり】

Pythonを使って複数枚の画像を自動でExcelに張り付ける方法を徹底解説!【図解あり】

こんにちは、さすを(@sasuwo0409)です。

いきなりですが、

フォルダにある画像を自動でExcelに張り付けたい!

と思ってはいませんか?

今回の記事は、Pythonを使ってフォルダにある画像を自動でExcelに張り付ける方法を解説してみたいと思います。

この記事を読めば、「複数枚ある画像をExcelに張り付けていく」という地獄のような単純作業を効率的に終わらせることができます。

それでは本文をどうぞ。

困っている人
困っている人

大量に集めた画像をExcelに張り付けていかなきゃいけないんだけど、ひとつひとつ手でやるのほんとうにめんどくさい、、

もっと効率的にできる方法はないかしら、、

さすを
さすを

この悩みを解決します!

この記事を読むとわかること:

Pythonを使って自動で複数枚の画像をExcelに張り付ける方法

筆者の情報:

  • 現役システムエンジニア 兼 ブロガー
  • 過去に6,000万のPython案件を受注
  • 最近ハマっていることは機械学習

※お金がかかってもいいから、少しでも早くPythonスキルを身につけたい方は、TechAcademy(テックアカデミー)のPythonコースがおすすめです。
エンジニアになれば、受講料は1か月もあれば回収できるので、問題なしです。
本気でPythonスキルを身につけたい方は、スクールで一気にスキルを身に着けるのもありでしょう。

>>TechAcademy(テックアカデミー)のPythonコースはこちら

スポンサーリンク

1.Pythonを使って複数枚の画像を自動でExcelに張り付ける方法

1.Pythonを使って複数枚の画像を自動でExcelに張り付ける方法

今回はGoogle Colaboratory上でプログラムを動かしていきます。

Google Colaboratoryの使い方については「【3分で解決!】Google Colaboratoryの使い方【無料ですぐにPythonを使えます】」で解説しています。

補足:
Google Colaboratoryで作成したExcelデータはローカルに落とすことができます。
ソースコードを多少変えれば、ローカル上でももちろんできるので、お好きな方でお試しください。

さすを
さすを

ローカルに落とす方法は後述します!

イッヌ
イッヌ

ローカル環境でPythonが使えて、容量も気にしない人はローカルでやった方が楽だワン!

Pythonを使って自動でGoogle画像を収集するための手順は以下の3ステップです。

  1. 画像を格納するフォルダを作成する
  2. Excelファイルを作成する
  3. 画像をExcelファイルに張り付けるプログラムを書く

その①:画像を格納するフォルダを作成する

今回は、プログラムが格納されているGoogle Colabフォルダ直下にimgフォルダを作成しています。
また、imgフォルダの中にdog_testフォルダ、dog_testフォルダの中にresizeフォルダを作っています。

Google Colab
—–put_pic_Excel.ipynb(これから作るスクリプト)
—–img
———–dog_test
—————– resize

フォルダ構成を変更してもOKですが、後述するプログラムの保存先フォルダ名が変わるので注意してください。

また、今回使用する画像は全て同じ大きさのものを使用しています。
もし、フォルダの中の画像サイズが違っており、統一したいと思っているなら「【Python】フォルダ画像を一括でサイズ変換する方法を徹底解説!【5分でできます】」の記事が参考になると思います。

その②:Excelファイルを作成する

フォルダの作成が終わったら、画像を張り付けるExcelファイルを作成しましょう。

ローカル環境で「auto_pic.xlsx」というExcelファイルを作成し、GoogleドライブにアップロードすればOKです。

図1:Excelファイルのアップロード
図1:Excelファイルのアップロード

その③:画像をExcelに張り付けるプログラムを書く

画像を自動でExcelに張り付けるプログラムは下記の通りです。

#ドライブをマウントする
from google.colab import drive
drive.mount('/content/drive')

補足:
上記のコマンドを実行すると、以下の画面が現れます。手順通りに操作すればOKです。

1.URLを押下

図2:マウントの手順①
図2:マウントの手順①

2.希望のアカウントを選択

図3:マウントの手順②
図3:マウントの手順②

3.ログインを押下

図4:マウントの手順③
図4:マウントの手順③

4.コードをコピーし、「Enter your authorization code」に入力

図5:マウントの手順④
図5:マウントの手順④
#カレントディレクトリに移動
%cd "/content/drive/My Drive/Google Colab"
import os
import time
import openpyxl
import datetime
from pytz import timezone
from openpyxl.drawing.image import Image

#現在時刻の表示
now = datetime.datetime.now()
jst_now = timezone('Asia/Tokyo').localize(now)
print("処理を開始します。")
print(jst_now)

#処理時間計測用
tm_start = time.time()

#Excelに挿入する画像フォルダ
new_dir_name = 'img/dog_test/resize'

#画像挿入するエクセルファイルを指定
wb = openpyxl.load_workbook('auto_pic.xlsx')
ws = wb["Sheet1"]

files = os.listdir(new_dir_name)
files_file = [f for f in files if os.path.isfile(os.path.join(new_dir_name, f))]
cnt = 1

for pic in range(len(files_file)):
  
  #挿入する画像を指定
  img = Image(new_dir_name + '/' +  (files_file[pic]))
  
  #画像挿入
  ws.add_image(img, 'A' + str(cnt))
  #位置調整
  cnt = cnt + 10

#保存するExcel名
wb.save('auto_pic.xlsx')

tm_end = time.time()
print('------------------------------------')
print('処理が完了しました。')
total = tm_end - tm_start
total_str = f'トータル時間: {total:.1f}s({total/60:.2f}min)'
print(total_str)

実行結果:

図6:実行結果①
図6:実行結果①
図7:実行結果②
図7:実行結果②

画像の大きさによっては、エクセルシートに張り付けた際に重なる場合があります。そのときは、36行目を適切に変更することで、重なりを解消することができます。

作成したファイルをローカルに落とす方法

作成したファイルは「ファイル」→「ダウンロード」→「Microsoft Excel(.xlsx)」の順に押していけばOKです。

図8:ファイルのダウンロード
図8:ファイルのダウンロード

最後に:退屈な時間を減らしていこう

Google Colaboratoryを使って自動でフォルダにある画像をExcelに張り付ける方法を解説してきました。

頭を使わない単純作業をどれだけ減らせるかで、人生の充実度は変わってくると思います。

ちょっと大げさにも感じたかもしれませんが、要するに「楽しいことに時間を費やしたいですよね」ということです。

というわけで、これからも単純作業を減らせるようにコツコツとプログラムを書いていこうと思います。

この記事が少しでも役に立っていたらうれしいです!

それでは!


コメント

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