Home » Python » Pythonでxlsxファイルから画像だけを取り出す

Pythonでxlsxファイルから画像だけを取り出す

動作検証バージョン:Windows 10 + Python 3.7.3

ファイルの実体がzip圧縮されたxmlファイル等であるExcel 2007が登場して以来、定期的にxlsxファイルから画像を取り出す小技が話題となります。

拡張子を「.xlsx」から「.zip」に変更して、ファイルを解凍すれば、xlフォルダー内のimagesフォルダーに画像ファイルを取り出せるという方法です。

Pythonのzipfileモジュールを使えば、簡単なスクリプトでxlsxファイルから画像だけを取り出すこともできます。

[スポンサードリンク]

ZipFile.extract()でxlsxファイルから画像ファイルを取り出すサンプル

以下のスクリプトを実行すると、Cドライブtempフォルダーのfoo.xlsxファイルの画像ファイルが、同じくCドライブtempフォルダーに作成された、imagesフォルダーに存在するxlフォルダー内のmediaフォルダーに展開されます。


import zipfile

with zipfile.ZipFile('C:\\temp\\foo.xlsx') as zf:
    for name in zf.namelist():
        if name.startswith('xl/media'):
            zf.extract(name, path='C:\\temp\\images')

ZipFile.extract()でxlsxファイルから画像ファイルを取り出す処理

ZipFile.namelist()メソッドで、zipファイルに含まれるファイルの名前をリストの形で取得できることを記事にしました。
スクリプト全体の構造は、ファイル名を取得する場合と同じです。
  with zipfile.ZipFile('C:\\temp\\foo.xlsx') as zf:
      for name in zf.namelist():

取得したxlsxファイルの内部ファイルの名前が「xl/media」で始まっているかをstr.startswith()メソッドで判定して、
         if name.startswith('xl/media'):

そのファイルをZipFile.extract()メソッドでCドライブのtempフォルダー内のimagesフォルダーに展開しています。
             zf.extract(name, path='C:\\temp\\images')

最終更新日時:2019-08-02 18:31

[スポンサードリンク]

Home » Python » Pythonでxlsxファイルから画像だけを取り出す

TrackBack:0

TrackBack URL

Home » Python » Pythonでxlsxファイルから画像だけを取り出す

Copyright © インストラクターのネタ帳 All Rights Reserved.

.