2007が登場して以来、定期的にxlsxファイルから画像を取り出す小技が話題となります。拡張子を「.xlsx」から「.zip」に変更してファイルを解凍すれば、xlフォルダー内のimagesフォルダーに画像ファイルを取り出せるという方法です。Pythonのzipfileモジュールを使えば、簡単なスクリプトでxlsxファイルから画像だけを取り出すこともできます。[スポンサードリンク]ZipFile.extract()でxlsxファイルから画像ファイルを取り出すサンプル以下のスクリプトを実行すると、Cドライブtempフォルダーのfoo.xlsxファイルの画像ファイルが、同じくCドライブtempフォルダーに作成された、imagesフォルダーに存在するxlフォルダー内のmediaフォルダーに展開されます。path='C:\\temp\\images')ZipFile.extract()でxlsxファイルから画像ファイルを取り出す処理ZipFile.namelist()メソッドで、zipファイルに含まれるファイルの名前をリストの形で取得できることを記事にしました。スクリプト全体の構造は、ファイル名を取得する場合と同じです。zf.namelist():例えば、ワークシート「Sheet1」だけが存在する、新規に作成したブックで、Sheet1に画像が1枚だけ存在する場合にprint(name)すれば、以下のようなファイル名が出力されます。[Content_Types].xml_rels/.relsxl/workbook.xmlxl/_rels/workbook.xml.relsxl/worksheets/sheet1.xmlxl/theme/theme1.xmlxl/styles.xmlxl/drawings/drawing1.xmlxl/media/image1.pngxl/worksheets/_rels/sheet1.xml.relsxl/drawings/_rels/drawing1.xml.relsdocProps/core.xmldocProps/app.xmlこの「xl/media/image1.png」が、画像ファイルの実体です。name.startswith('xl/media'):そのファイルをZipFile.extract()メソッドでCドライブのtempフォルダー内のimagesフォルダーに展開しています。Officeの使い方などを紹介し続け(2012年頃からはVBA関連記事が多め)、毎日5万人の方にご覧いただいています。