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

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

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

文章目录

  • 前言
  • 一、代码讲解
    • 1.1 安装第三方库
    • 1.2 完整代码
  • 二、工具下载


前言

  • 该工具只支持 xlsx 格式的文件,如果是 xls 格式需要先转为 xlsx
  • 该工具不能识别“嵌入单元格图片”,需要先转为“浮动图片”才能被识别;
  • 该工具为 exe 格式,只支持 Windows 系统下运行;
  • 该工具可以处理输入目录中的所有 xlsx 文件;
  • 如果对代码不感兴趣,可以跳过“代码讲解”章节,直接下载工具来使用即可。

一、代码讲解

1.1 安装第三方库

该代码使用了两个第三方库:openpyxlpillow,在使用前需要提前安装:

pip install openpyxl
pip install pillow

1.2 完整代码

  • 该代码首先需要用户输入一个包括 xlsx 文件的目录,例如:C:/temp
  • get_xlsx_files() 方法可以获取该目录下所有 xlsx 文件,并以列表的方式返回;
  • 遍历 xlsx 文件列表,逐个文件处理并创建与之对应的文件夹;
  • 加载 Excel 文件,遍历所有 Sheet 页,并逐个处理;
  • 获取该 Sheet 页中所有图片,并逐个保存到本地;
  • 所有的 Excel 文件处理完后,结束。
import io
import os
import timefrom PIL import Image
from openpyxl import load_workbook# 获取xlsx文件列表
def get_xlsx_files(input_path):xlsx_files = list()for filename in os.listdir(input_path):if filename.endswith(".xlsx"):xlsx_files.append(filename)return xlsx_files# xlsx文件路径(注意:不支持xls)
xlsx_path = input("请输入你的xlsx文件所在目录(例如 C:/temp):").replace('\\', '/')
for xlsx_file in get_xlsx_files(xlsx_path):# 创建图片保存目录saveDir = xlsx_path + "/" + xlsx_file + "_images/"print(saveDir)if not os.path.exists(saveDir):os.makedirs(saveDir)# 加载Excel文件wb = load_workbook(xlsx_path + "/" + xlsx_file)# 遍历每个Sheet页for sheet in wb.sheetnames:print("Sheet:" + sheet)ws = wb[sheet]count = 0# 遍历每个图片并保存for image in ws._images:count += 1img = Image.open(io.BytesIO(image._data()))img_name = f"{sheet}_{count}.jpg"print("Image:" + img_name)img.save(saveDir + img_name)print("结束")
time.sleep(60)

二、工具下载

为了方便使用,我将该程序打包成为 exe 可执行文件,你可以直接下载使用。

下载链接:https://pan.quark.cn/s/048f15ebda68

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/800711.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rsync+inotify组合实现及时远程同步

目录 Rsync(Remote Sync)简介: Rsync 主要特点: Rsync 常用命令选项: Inotify 简介: Inotify 的主要功能: 结合 Rsync 和 Inotify 实现实时同步: 操作步骤: 配置…

vue3前端加载动画 lottie-web 的简单使用案例

什么是 Lottie Lottie 是 Airbnb 发布的一款开源动画库,它适用于 Android、iOS、Web 和 Windows 的库。 它提供了一套从设计师使用 AE(Adobe After Effects)到各端开发者实现动画的工具流。 UED 提供动画 json 文件即可, 开发者就…

品牌发言稿怎么写?纯干货

品牌发言稿的重要性不言而喻,它不仅代表着品牌形象,更是沟通品牌与消费者、合作伙伴的桥梁。如何撰写一篇高质量的品牌发言稿,成为许多品牌关注的焦点。伯乐网络传媒十多年文案撰写经验,今天就来给大家讲一讲。 一、品牌发言稿的组…

Linux: signal: sigcontext 结构体在哪里组装?

以下为intel x86-64为例 英文单词context这里是上下文的意思,那对于应用程序在跑的过程种,有哪些信息属于上下文呢?根据内核的代码来看有,程序执行时的寄存器内容/内存的内容。比如在x86-64里(arch/x86/include/uapi/asm/sigcontext.h),寄存器的列表有: https://man7.…

跨服务器迁移nextcloud数据

背景 阿里云最近做活动,99一年的2U2G的服务器,比我原来的1U1G的服务器不知道高到哪里去了,于是决定迁移服务器数据到另一台主机上。原先的计划是直接做一个自定义镜像,然后复制到另一台主机就行,结果发现旧主机是aliyunOS,新主机不想踩这个坑了,决定换成乌班图,因此决定重新搭…

Redis缓存设计

文章目录 1 缓存的收益与成本分析1.1 收益1.2 成本 2 缓存更新策略的选择和使用场景2.1 LRU/LFU/FIFO算法剔除2.2 超时剔除2.3 主动更新2.4 缓存更新策略对比 2.5 最佳实践 3 缓存粒度控制方法3.1 缓存全部数据3.2 缓存部分数据缓存粒度控制方法对比 4 缓存穿透问题优化4.1 什么…

RISC-V 指令学习

学习资料:RISC-V原子指令LR/SC_lr sc-CSDN博客

所有网站都需要使用SSL证书?

SSL证书对于网站的重要性,简单来说就是: 保护隐私:就像给你的信封加了密码锁,SSL证书让网站和用户之间的所有交流都变得保密。当你在网站上输入密码、银行卡号等敏感信息时,有了SSL证书,这些信息就会被加密…

分表?分库?分库分表?实践详谈 ShardingSphere-JDBC

如果有不是很了解ShardingSphere的可以先看一下这个文章: 《ShardingSphere JDBC?Sharding JDBC?》基本小白脱坑问题 阿丹: 在很多开发场景下面,很多的技术难题都是出自于,大数据量级或者并发的场景下面的。这里就出…

算法打卡day37|动态规划篇05| Leetcode1049.最后一块石头的重量II、494.目标和、474.一和零

算法题 Leetcode 1049.最后一块石头的重量II 题目链接:1049.最后一块石头的重量II 大佬视频讲解:最后一块石头的重量II视频讲解 个人思路 和昨天的分割等和子集有些相像,这道题也是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小&am…

Discord注册教程:Discord刚注册就被封怎么办?附申诉教程!

Discord如今在海外社交媒体平台中迅速崛起,许多社交媒体营销人员也纷纷利用其社群特性进行推广,Discord注册也就成为社媒营销人员必经之路。然而,很多人注册Discord账号时常常会想:“在国内使用Discord会封号吗?”事实…

STL库常用数据结构及常见用法

&#xff08;注意&#xff0c;这里介绍的用法只是常用的&#xff0c;但是不完全&#xff0c;如若有错&#xff0c;可以更改&#xff09; 一.vector 可以看成变长数组&#xff0c;长度可变。 1.定义 vector<type>vi; 2.尾部增加元素 vi.push_back(el); 3.删除尾部元素 …

3d模型怎么取消光标轴定位---模大狮模型网

取消光标轴定位可以帮助您将3D模型的旋转、缩放和移动操作重置为全局坐标系。不同的3D建模软件可能有不同的方法来取消光标轴定位。以下是一般情况下在常见的3D建模软件(例如Blender、Maya、3ds Max等)中取消光标轴定位的方法&#xff1a; Blender中取消光标轴定位&#xff1a;…

【Canvas技法】图解绘制圆弧的重要函数 arc(x,y,r,startAngle,endAngle,clockWise)

【一图释疑】 【绘制上图用代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>Html5/Canvas中绘制圆弧的重要函数 arc(x,y,r,startA…

2024.4.1-day06-认识 CSS(三大特性、引入方式)

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; day06-认识 CSS(三大特性、引入方式) 文章目录 day06-认识 CSS(三大特性、引入方式)作业…

Chatgpt掘金之旅—有爱AI商业实战篇|内容策展业务|(八)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、AI技术创业内容策展业务有哪些机会&#xff1f; 人工智能&#xff08;AI&#xff09;技术作为当今科技创新的前沿领域&#xff0c;为创业者提供了广阔的机会和挑战。随着…

JavaScript - 你知道Ajax的原理吗?如何封装一个Ajax

难度级别:中高级及以上 提问概率:75% 想要实现Ajax,就需要创建它的核心通信对象XMLHttpRequest,通过核心对象的open方法与服务端建立连接,核心对象的send方法可以将请求所需数据发送给服务端,服务端接收到请求并做出响应,我们通过核心对象…

【JS获取宽高】JavaScript获取浏览器、元素、屏幕的宽高尺寸

原文链接&#xff1a;JavaScript获取浏览器、元素、屏幕的宽高尺寸 原文讲得非常详细&#xff0c;在此分享和记录&#xff01;

linux 配置pg官方镜像

针对linux 系统没有对应pg版本 1、编辑 PostgreSQL 的源列表文件 sudo nano /etc/apt/sources.list.d/pgdg.list 2、使用 PostgreSQL 官方的镜像源地址 deb http://apt.postgresql.org/pub/repos/apt/ focal-pgdg main 3、导入 PostgreSQL 的 GPG 公钥&#xff1a; wget --quie…

Python操作Neo4j数据库

建立Neo4j链接 !pip install neo4j pyahocorasick numpy pandas --no-warn-script-location定义数据操作对象 from neo4j_driver import Neo4jConnection, Node链接并查看节点数量 conn Neo4jConnection(neo4j://localhost:7687/, neo4j, Lorne2022)conn.create(Node("Pe…