python读取execl里的图片

news2024/11/26 10:49:03
  • 正常的读取图片
from openpyxl import load_workbook
from PIL import Image

from openpyxl import load_workbook
wb = load_workbook(r'C:\Users\Administrator\Downloads\output1111.xlsx')
ws = wb[wb.sheetnames[0]]
for image in ws._images:
    data= image.anchor._from
    if image.format=='gif':
         # 如果图片是GIF,则保存
        with open(f'C:\\Users\\Administrator\\Desktop\\hello\\row_{data.row}_col_{data.col}.gif', 'wb') as output_gif:
            output_gif.write(image._data())

    # 输出图片的位置信息
    if image.format=='png':
        with open(f'C:\\Users\\Administrator\\Desktop\\hello\\row_{data.row}_col_{data.col}.png', 'wb') as output_gif:
            output_gif.write(image._data())
            print(image.anchor._from)

    if image.format=='jpg':
        with open(f'C:\\Users\\Administrator\\Desktop\\hello\\row_{data.row}_col_{data.col}.jpg', 'wb') as output_gif:
            output_gif.write(image._data())
            print(image.anchor._from)
  • 优化更新后有多张图片
    在这里插入图片描述
from openpyxl import load_workbook

wb = load_workbook(r'E:\odoo\odoo16\output1111.xlsx')
ws = wb[wb.sheetnames[0]]
i = 1


def find_fially(picture_name, row_list):
    seq = int(picture_name.split('_')[1])
    picture_name = f'{name}_{seq + 1}'
    if picture_name in row_list:
        return find_fially(picture_name, row_list)
    return picture_name

row_list = []
for image in ws._images:
    data = image.anchor._from
    name = ws.cell(row=data.row + 1, column=1)._value
    picture_name = f'{name}_{i}'
    if picture_name not in row_list:
        i = 1
    else:
        picture_name = find_fially(picture_name, row_list)
    row_list.append(picture_name)
    with open(f'E:\\{picture_name}.{image.format}', 'wb') as output_gif:
        output_gif.write(image._data())

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

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

相关文章

深入学习默认成员函数——c++指南

前言:类和对象是面向对象语言的重要概念。 c身为一门既面向过程,又面向对象的语言。 想要学习c, 首先同样要先了解类和对象。 本节就类和对象的几种构造函数相关内容进行深入的解析。 目录 类和对象的基本概念 封装 类域和类体 访问限定符…

家长应如何培养孩子对人工智能(AI)的兴趣?无际Ai分享

随着科技的飞速发展,人工智能已经成为了当今社会的重要组成部分。然而,在中小学阶段,很少有学校系统地对学生进行人工智能方面的教育。作为普通家庭的家长,我们可以通过一些方法来激发孩子对人工智能的兴趣,让他们在这…

网络工程师——2024自学

一、怎样从零开始学习网络工程师 当今社会,人人离不开网络。整个IT互联网行业,最好入门的,网络工程师算是一个了。 什么是网络工程师呢,简单来说,就是互联网从设计、建设到运行和维护,都需要网络工程师来…

第7讲:数组和函数实践:扫雷游戏

第7讲:数组和函数实践:扫雷游戏 1. 扫雷游戏分析和设计1.1 扫雷游戏的功能说明1.2 游戏的分析和设计1.2.1 数据结构的分析1.2.2 文件结构设计 2. 扫雷游戏的代码实现3. 扫雷游戏的扩展 1. 扫雷游戏分析和设计 1.1 扫雷游戏的功能说明 • 使用控制台实现…

Edu 12 --- Simple Subset -- 题解 (一个比较巧妙的思维算法题)

Simple Subset: 题解: 思路解析: 题目要求任意两个数的和为质数,那我们最坏情况就是任意选择一个数,此时子集为最大。 如果子集中有两个奇数或者偶数,他们两个之和一定会被2整除,那么我们只能…

keilC51明明已经定义的变量却报错未定义与期待asm

文章目录 keil_C51采用的是C89标准:C89变量定义标准:程序块: expected __asm:已经定义某个变量却报错未定义该变量:从汇编语言中看: keil_C51采用的是C89标准: C89变量定义标准: 1…

Web框架开发-HTTP协议

一、HTTP协议简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本的传送协议。 HTTP是一个属于应用层的面向对象的协议,由于其简…

C while 循环

只要给定的条件为真,C 语言中的 while 循环语句会重复执行一个目标语句。 语法 C 语言中 while 循环的语法: while(condition) {statement(s); }在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。 co…

【C++进阶】C++多态概念详解

C多态概念详解 一,多态概念二,多态的定义2.1 多态构成的条件2.2 什么是虚函数2.3 虚函数的重写2.3.1 虚函数重写的特例2.3.2 override和final 2.4 重载和重写(覆盖)和重定义(隐藏)的区别 三,抽象…

数据库规范化设计案例解析

1.介绍 数据库规范化设计是数据库设计的一种重要方法,旨在减少数据库中的冗余数据,提高数据的一致性,确保数据依赖合理,从而提高数据库的结构清晰度和维护效率。规范化设计通过应用一系列的规范化规则(或称“范式”&a…

高边开关驱动容性负载

Hello UU们,有做汽车电子的吗? 如果做汽车电子可能会用到很多高边开关,高边开关带的负载是让容性负载,或者是感性负载时候会比较恶劣,容性负载可能一下子不容易带起来.因为电池和负载电容上的巨大压差,高边开关上流过的电流非常之大,为此我们可以使用缓慢的打开高边开关,高边…

Firefly: 一站式大模型训练工具

Firefly: 一站式大模型训练工具 转载自GitHub项目:https://github.com/yangjianxin1/Firefly 项目简介 Firefly 是一个开源的大模型训练项目,支持对主流的大模型进行预训练、指令微调和DPO,包括但不限于Gemma、Qwen1.5、MiniCPM、Llama、I…

关于并发编程的一些总结

并发编程 1.synchronized是什么? synchronized是Java中的一个关键字,主要是为了解决多个线程访问共享资源的同步性,可以保证被它修饰的代码块或方法在任何时间至多只有一个线程执行。 2.synchronized的进化史? 在早期Java版本中&#xf…

Python合并两张图片 | 先叠透明度再合并 (附Demo)

目录 前言正文 前言 用在深度学习可增加噪音,增加数据集等 推荐阅读:Pytorch 图像增强 实现翻转裁剪色调等 附代码(全) 正文 使用Pillow库来处理图像(以下两张图来自网络) 图一: 图二&…

飞塔防火墙开局百篇——002.FortiGate上网配置——透明模式配置(Transparent)

透明模式配置 开启透明模式创建策略 在不改变现有网络拓扑前提下,将防火墙NGFW以透明模式部署到网络中,放在路由器和交换机之间,防火墙为透明模式,对内网网段192.168.1.0/24的上网进行4~7层的安全防护。 登陆FortiGate防火墙界面&…

Selenium自动化测试面试题全家桶

1、什么是自动化测试、自动化测试的优势是什么? 通过工具或脚本代替手工测试执行过程的测试都叫自动化测试。 自动化测试的优势: 1、减少回归测试成本 2、减少兼容性测试成本 3、提高测试反馈速度 4、提高测试覆盖率 5、让测试工程师做更有意义的…

2021年中国环境统计年鉴、工业企业污染排放数据库

《中国环境统计年鉴》是国家统计局和生态环境部及其他有关部委共同编辑完成的一本反映我国环境各领域基本情况的年度综合统计资料。收录了上一年年全国各省、自治区、直辖市环境各领域的基本数据和主要年份的全国主要环境统计数据。 内容共分为十二个部分,即:1.自然状况;2.水环…

收下这份实操案例,还怕不会用Jmeter接口测试工具

一、简介 JMeter,一个100%的纯Java桌面应用,由Apache组织的开放源代码项目,它是接口功能、自动化、性 能测试的工具。具有高可扩展性、支持HTTP、HTTPS、TCP、等多种协议,还可以自己编写Java脚本对 协议进行扩展。 官…

vue 浏览器刷新报404,系统正常访问没问题

这个情况是因为vue的路由出问题了。 采用hash模式即可。 详细请了解: vue router 的两种路由模式hash与history的区别_vue hisotry-CSDN博客 vue默认是是hash

微信小程序(一)

WebView app.是全局配置&#xff0c;app.json是全局配置文件&#xff0c;在页面的.json配置文件中的配置会覆盖我们全局的配置 快捷键&#xff1a; .box 敲回车 ----- <view class"box"></view> .row*8 敲回车&#xff1a; .row{$}*8 敲回车 案例1&…