Excel提取圖片并自動上傳到接口
在實際項目中,我們可能經常會遇到需要批量從Excel文件(.xlsx)中提取圖片并上傳到特定接口的場景。今天,我就詳細介紹一下如何使用Python實現這一功能,本文會手把手教你搭建一個完整的解決方案。
一、整體需求
我們要實現的功能主要有三個步驟:
- 從Excel文件中提取所有嵌入的圖片。
- 將圖片文件上傳到指定的API接口。
- 支持從本地文件或網絡鏈接讀取Excel文件。
二、實現原理
Excel文件(.xlsx
格式)本質是一個壓縮的ZIP文件,圖片都存儲在內部路徑xl/media
下。因此我們使用Python的zipfile
庫來解壓并提取其中的圖片文件。
上傳圖片則通過requests
庫實現POST請求完成文件上傳。
三、核心代碼實現
步驟1:從Excel提取圖片
from zipfile import ZipFile
import mimetypes
import osdef extract_images_from_excel(xlsx_path):images = []with ZipFile(xlsx_path, 'r') as zf:for name in zf.namelist():if name.startswith("xl/media/"):raw = zf.read(name)fname = os.path.basename(name)mime, _ = mimetypes.guess_type(fname)mime = mime or "application/octet-stream"images.append((fname, raw, mime))return images
步驟2:上傳圖片到接口
import requests
import iodef upload_image(filename, file_bytes, mime_type, token, upload_url):headers = {"authorization": f"Bearer {token}"}files = {"file": (filename, io.BytesIO(file_bytes), mime_type)}response = requests.post(upload_url, headers=headers, data=data, files=files)response.raise_for_status()return response.json()
步驟3:支持Excel文件下載(可選)
import requests
import os
from urllib.parse import urlparsedef download_excel(url, save_dir="downloads"):os.makedirs(save_dir, exist_ok=True)fname = os.path.basename(urlparse(url).path) or "file.xlsx"path = os.path.join(save_dir, fname)resp = requests.get(url)resp.raise_for_status()with open(path, "wb") as f:f.write(resp.content)return path
四、完整使用案例
下面是完整的使用腳本,集成了上述所有功能,支持本地文件和網絡下載:
import sys
import redef main(source):if re.match(r'^https?://', source):excel_path = download_excel(source)else:excel_path = sourceimages = extract_images_from_excel(excel_path)print(f"共找到{len(images)}張圖片,即將上傳...")for fname, content, mime in images:result = upload_image(filename=fname,file_bytes=content,mime_type=mime,token="你的接口token",upload_url="你的上傳URL")if result.get("success"):print(f"上傳成功:{fname} 鏈接為 {result['data']['fileUrl']}")else:print(f"上傳失敗:{fname}")if __name__ == "__main__":source = sys.argv[1]main(source)
使用示例:
python script.py /path/to/file.xlsx
python script.py https://example.com/file.xlsx
五、小結
通過以上介紹,相信你已經掌握了如何從Excel中批量提取圖片并上傳至指定接口的方法。這種方式簡單易用且可擴展性強,在自動化處理場景中尤其有用。
希望本文能夠幫到你,如果有任何問題,歡迎在評論區與我交流!