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

news2024/11/27 18:27:40

本文收录于《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 time

from 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 += 1
            img = 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.coloradmin.cn/o/1578047.html

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

相关文章

【MATLAB源码-第180期】基于matlab的PTS,SLM,CPFilter三种降低OFDM系统的PAPR仿真。

操作环境: MATLAB 2022a 1、算法描述 1. 限幅和滤波(Clipping and Filtering) 原理简介 限幅和滤波是一种基础且直观的方法,用于降低OFDM信号的PAPR。在限幅阶段,信号的幅度在达到设定阈值时会被削减,…

《springcloud alibaba》 四 seata安装以及使用

目录 准备调整db配置准备创建数据库 seata配置nacos配置confi.txt下载向nacos推送配置的脚本 启动seata新建项目order-seata项目 订单项目数据库脚本pom.xmlapplication.yml启动类实体类dao类service类controller类feign类mapper类 stock-seata 库存项目数据库脚本pom.xmlappli…

高效解决Ubuntu Server 18.04.1 LTS 64bit更新gdb8.1.1到gdb12.1

文章目录 问题解决步骤 问题 因为需要用到gdb一些指令,但是gdb8.x好像存在普遍的问题,实现不了某些指令,比方说set detach-on-fork on,升级版本也没有比较好的教程 经过我不断的试错,我终于升级成功了!&a…

Qt使用QWidget重绘实现圆环形渐变色进度条(支持不确定进度模式)

效果如下: 从纯竖直方向顶部蓝色到底部青色的渐变。 从左上角偏左45到右下角偏右45的蓝色到青色渐变。 从左上角偏左22.5到右下角偏右22.5的蓝色到青色渐变。(这个角度渐变最好看) 可以选择添加背景图片 支持两种模式:正常进度模…

【完全背包求方案数问题】AcWing1023.买书(赋练习题目)

【题目链接】活动 - AcWing 输入样例1&#xff1a; 20输出样例1&#xff1a; 2输入样例2&#xff1a; 15输出样例2&#xff1a; 0输入样例3&#xff1a; 0输出样例3&#xff1a; 1 【代码】 //1023.买书——完全背包问题#include<bits/stdc.h>using namespace st…

我去,PMP原来不是所有人都能报!

很多人可能觉得PMP的报名条件很复杂&#xff0c;又是经验要求&#xff0c;又是学历要求的&#xff0c;网络上关于PMP报名条件说的层出不穷&#xff0c;今天给大家统一一下&#xff0c;报名PMP究竟需要什么条件&#xff1a; 官方报考条件&#xff1a; 一、报名考生必须具备35小…

【I2C总线驱动】

一、I2C总线背景知识 SOC芯片平台的外设分为&#xff1a; 一级外设&#xff1a;外设控制器集成在SOC芯片内部二级外设&#xff1a;外设控制器由另一块芯片负责&#xff0c;通过一些通讯总线与SOC芯片相连 Inter-Integrated Circuit&#xff1a; 字面意思是用于“集成电路之间…

多叉树题目:子树中标签相同的结点数

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;子树中标签相同的结点数 出处&#xff1a;1519. 子树中标签相同的结点数 难度 5 级 题目描述 要求 给你一个树&#xff08;即一个连通的无向无环图…

QT 使用redis ,连接并使用

一.redis安装 链接&#xff1a;https://pan.baidu.com/s/17fXKOj5M4VIypR0y5_xtHw 提取码&#xff1a;1234 1.下载得到文件夹如图 course_redis为安装包。 2.启动Redis服务 把安装包解压到某个路径下即可。 打开cmd窗口&#xff0c;切换到Redis安装路径&#xff0c;输入 r…

飞企互联-FE企业运营管理平台 druid路径 弱口令漏洞复现

0x01 产品简介 飞企互联-FE企业运营管理平台是一个基于云计算、智能化、大数据、物联网、移动互联网等技术支撑的云工作台。这个平台可以连接人、链接端、联通内外,支持企业B2B、C2B与O2O等核心需求,为不同行业客户的互联网+转型提供支持。 0x02 漏洞概述 飞企互联-FE企业…

AI编程005/ 逆向生成mysql的建表语句

1/ 通过insert into 语句生成建表语句 有些时候我们能获取到表的insert语句&#xff0c;但是没有表结构。我们可以借助AI工具&#xff0c;让其逆向生成mysql的建表语句。 提示词如下&#xff1a; 根据下面的SQL语句&#xff0c;逆向生存mysql的建表语句&#xff0c;每个字段…

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

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

申请北京资产评估公司资产评估备案要什么条件

北京资产评估注册要求&#xff0c;很多人想办理资产评估公司&#xff0c;但是不知道怎么申请评估公司更快效率更高。我公司是专业办理资产评估公司的专业代理机构&#xff0c;能办理资产评估公司注册&#xff0c;资产评估公司人员代持&#xff0c;等一系列的服务&#xff0c;关…

谷歌DeepMind发布Gecko:专攻检索,与大7倍模型相抗衡

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 Gecko 是一种通用的文本嵌入模型&#xff0c;可用于训练包括文档检索、语义相似度和分类等各…

积木-蓝桥每日真题

0积木 - 蓝桥云课 (lanqiao.cn) 题目描述 小明用积木搭了一个城堡。 为了方便&#xff0c;小明在搭的时候用的是一样大小的正方体积木&#xff0c;搭在了一个n行m列的方格图上&#xff0c;每个积木正好占据方格图的一个小方格。 当然&#xff0c;小明的城堡并不是平面的&#x…

Docker 安装RabbitMQ以及使用客户端图形化界面

目录 一、点击进入docker 镜像仓库 1.1 直接在官网里 搜索 rabbitmq 1.2 在标签里 直接搜索3.10-management 因为这个标签包含用户操作界面 二、启动docker 2.1 首先拉取镜像&#xff1a; 2.2 Docker运行&#xff0c;并设置开机自启动 三、访问用户操作界面 一、点击进入…

算法练习第12天|● 239. 滑动窗口最大值● 347.前 K 个高频元素

239.滑动窗口的最大值 力扣原题 题目描述&#xff1a; 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#xff…

使用 Jenkins、Gitlab、Harbor、Helm、k8s 来实现流水线作业

文章目录 一、流程二、Dockerfile 使用 Jenkins、Gitlab、Harbor、Helm、Kubernetes 来实现一个完整的持续集成和持续部署的流水线作业 一、流程 开发人员提交代码到 Gitlab 代码仓库通过 Gitlab 配置的 Jenkins Webhook 触发 Pipeline 自动构建Jenkins 触发构建构建任务&…

C++设计模式:桥模式(五)

1、定义与动机 桥模式定义&#xff1a;将抽象部分&#xff08;业务功能&#xff09;与实现部分&#xff08;平台实现&#xff09;分离&#xff0c;使他们可以独立地变化引入动机&#xff1a; 由于某些类型的固有的实现逻辑&#xff0c;使得它们具有两个变化的维度&#xff0c;…

Jenkins 持续集成 【CICD】

持续集成 &#xff08;Continuous integration&#xff0c;简称CI&#xff09; 持续集成是一种开发实践&#xff0c;它倡导团队成员频繁的集成他们的工作&#xff0c;每次集成都通过自动化构建&#xff08;包括编译、构建、打包、部署、自动化测试&#xff09;来验证&#xff…