使用 Python 批量提取 Excel 中的图片(提供工具下载链接)

在这里插入图片描述

本文收录于《Python入门核心技术》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。

大家好,我是水滴~~
本文主要讲解如何利用 Python 来批量提取 Excel 中的图片,分别保存到目录中。并将程序打包成可执行文件,方便直接运行使用。希望能对你有所帮助!
注意:不支持“嵌入单元格中的图片”,需要先转为“浮动图片”
在这里插入图片描述


前言

  • 该工具只支持 xlsx 格式的文件,如果是 xls 格式需要先转为 xlsx
  • 该工具不能识别“嵌入单元格图片”,需要先转为“浮动图片”才能被识别;
  • 该工具为 exe 格式,只支持 Windows 系统下运行;
  • 该工具可以处理输入目录中的所有 xlsx
  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用Python的`requests`和`openpyxl`库来实现批量下载图片和读取Excel文件。具体步骤如下: 1. 使用`openpyxl`库读取Excel文件图片链接和对应的单元格位置,存储为一个字典。 2. 遍历字典的每个图片链接使用`requests`库下载图片。 3. 下载完成后,检查图片格式是否正确,如果不正确,则记录错误单元格位置。 4. 最终输出错误单元格位置。 下面是示例代码: ```python import requests from openpyxl import load_workbook from PIL import Image from io import BytesIO # 读取Excel文件图片链接和对应的单元格位置 def read_excel(file_path): wb = load_workbook(file_path) ws = wb.active links = {} for row in ws.iter_rows(min_row=2, values_only=True): link = row[1] cell = row[0] links[link] = cell return links # 下载图片并检查格式是否正确 def download_image(link): response = requests.get(link) img = Image.open(BytesIO(response.content)) if img.format not in ['JPEG', 'PNG', 'GIF']: return False return True # 批量下载图片并记录错误单元格位置 def batch_download(links): errors = [] for link in links: if download_image(link) == False: errors.append(links[link]) else: response = requests.get(link) with open(f"{links[link]}.jpg", "wb") as f: f.write(response.content) return errors # 测试代码 if __name__ == '__main__': links = read_excel('file.xlsx') errors = batch_download(links) if len(errors) > 0: print(f"以下单元格图片格式错误:{errors}") else: print("所有图片下载完成!") ``` 需要注意的是: 1. Excel文件图片链接需要放在第二列,对应单元格位置需要放在第一列。 2. 下载图片时,需要使用`Pillow`库打开图片并检查格式是否正确,如果图片格式不正确,则记录错误单元格位置。 3. 为了方便区分不同单元格位置的图片文件,可以将单元格位置作为文件名保存图片,例如`A1.jpg`表示单元格A1的图片

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水滴技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值