Python读取excel中的图片

一、读取excel文件

我们先来看看如何读取excel文件,读取excel文件的方式很多。这里选择openpyxl模块,安装语句如下:

pip install openpyxl

我们还需要用到一些其它模块,具体如下:

pip install pyzbar
pip install pillow
pip install numpy

下面我们就可以开始操作了。

在Excel中,有工作簿、表、单元等。这里简单说一下,工作簿就是一个excel文件,表的话就是我们excel左下角切换的sheet1、sheet2,单元就是一个格子。下面我们来读取一个excel文件:

from openpyxl import load_workbook
# 加载excel
wb = load_workbook("111.xlsx")
# 切换到第一张表
ws = wb[wb.sheetnames[0]]
# 获取A3单元
cell = ws['A3']
# 输出A3单元的值
print(cell.value)

openpyxl的更多操作可以看看官方的文档https://openpyxl.readthedocs.io/en/stable/tutorial.html。

二、读取excel中的图片

读取excel中的图片有多种方式,本文会分享两种方式。

(1)使用zipfile模块

excel本身是一个压缩文件,我们把excel的后缀改成zip后,手动解压就会看到在xl/media目录下有一些图片文件,这些图片就是excel种插入的图片。因此我们就可以通过解压的方式读取excel种的图片,具体代码如下:

import os
from zipfile import ZipFile
# 解压目录
unzip_path = "./unzip"
if not os.path.exists(unzip_path):os.mkdir(unzip_path)
with ZipFile("111.xlsx") as f:for file in f.namelist():# 解压图片部分的文件if file.startswith("xl/media"):f.extract(file, path=unzip_path)

详细讲解可以参考https://blog.csdn.net/ZackSock/article/details/120539753。

(2)使用openpyxl读取

上面的操作可以获取excel中的图片,但是有个缺点。就是我们不知道哪个图片来自哪个单元,在有些情况下知道图片来自哪个单元是很有比较的。下面我们就来解决这个问题:

from openpyxl import load_workbook
wb = load_workbook("111.xlsx")
ws = wb[wb.sheetnames[0]]
# 遍历表中所有托
for image in ws._images:print(image)

我们先读取了一个表,然后调用_images获取表中的所有图片。但是这个图片我们还不能操作,具体对图片的操作我们下一节再看。我们先看看怎么知道图片来自哪个单元,我们可以输出图片的anchor._from:

from openpyxl import load_workbook
wb = load_workbook("111.xlsx")
ws = wb[wb.sheetnames[0]]
for image in ws._images:# 输出图片的位置信息print(image.anchor._from)

具体输入内容如下:

<openpyxl.drawing.spreadsheet_drawing.AnchorMarker object>
Parameters:
col=0, colOff=1, row=0, rowOff=1

其中col表示行号,row表示列号。根据这些信息,我们就可以知道图片的单元了。比如col=0,row=0,表示的应该是A1单元。如果col=1,row=1,表示的应该是B2单元。

三、对读取的图片进行处理

对图片处理的操作有很多,这里要看具体需要。这里我分享一下把excel中图片转换成pillow图片和ndarray对象的操作。转换后,我们就可以用numpy和pillow对图片进行各种操作。

import numpy as np
from PIL import Image
from openpyxl import load_workbook
wb = load_workbook("111.xlsx")
ws = wb[wb.sheetnames[0]]
for image in ws._images:# 将图片转换成Pillow中的图片对象img = Image.open(image.ref).convert("RGB")# 将Pillow中的图片对象转换成ndarray数组img = np.array(img)

如果我们excel中的图片是二维码,我们就可以进行下面的操作:

import numpy as np
from PIL import Image
from pyzbar import pyzbar
from openpyxl import load_workbook
wb = load_workbook("111.xlsx")
ws = wb[wb.sheetnames[0]]
for image in ws._images:# 转换成容易操作的图片对象img = Image.open(image.ref).convert("RGB")img = np.array(img)# 解析二维码data = pyzbar.decode(img)if data:text = data[0].data.decode('utf-8')print(text)else:print("未识别到内容")

今天的内容就到这里,感兴趣的读者可以关注“新建文件夹X”。

Python读取excel中的图片相关推荐

  1. vb.net读取excel并写入dgv_如何用Python读取Excel中的图片?然后写入图片?

    大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析. 那么你知道如何使用Python读 ...

  2. 如何用Python读取Excel中图片?又如何用Python往Excel中写入图片?

    大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析. 那么你知道如何使用Python读 ...

  3. python 读取excel图片_如何用Python读取Excel中图片?

    公众号: 早起Python 作者:刘早起 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进 ...

  4. 怎么用python读取excel图_如何用Python读取Excel中图片?

    公众号: 早起Python 作者:刘早起 大家好,在使用Python进行办公自动化操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进 ...

  5. python读取excel图片尺寸_Python读取excel中的图片完美解决方法

    excel中有图片是很常见的,但是通过python读取excel中的图片没有很好的解决办法. 网上找了一种很聪明的方法,原理是这样的: 1.将待读取的excel文件后缀名改成zip,变成压缩文件. 2 ...

  6. python读取Excel中关联表格的数据(只要是同Excel中

    来自CSDN-Mr熊 https://blog.csdn.net/qq_41030861/article/details/80515984 谁能告诉我前面这一堆都是什么啊... python读取Exc ...

  7. python读取excel批量下载图片

    需求: 有一个Excel表格,里面存储了很多图片地址,要把这些图片批量下载到本地 # 读取Excel中的图片地址,下载图片 # 导入2个包,导入方法为命令行里执行pip install openpyx ...

  8. python 读取excel中单元格的内容

    python 读取excel中单元格的内容 excel文件内容: 读取excel代码: # coding=utf-8 import xlrd import sysreload(sys) sys.set ...

  9. 使用python读取excel中的数据,并绘制折线图

    使用python读取excel中的数据,并绘制折线图 做实验的时候采集到一些数据,从文本拷贝到excel,然后从十六进制转换成十进制.图表是分析数据的有利工具,使用python绘制出的图表简明美观.所 ...

最新文章

  1. android设置控件的坐标,Android中使PopupWindow显示在指定控件的上下左右!
  2. ScalaTour-1.基础
  3. 未来计算在“云-端”
  4. 计算机应用技术多久退休,Windows 7正式退休 这些解决办法你必须了解
  5. CVPR 2021 底层视觉最新进展分享
  6. 苹果电脑 默认安装jdk位置_收藏起来你一定用的上!JDK的安装和配置
  7. Javascript:一个屌丝的逆袭之路
  8. java 大数操作(加减乘除及取余)
  9. CodeForces 689E (离散化+逆元+组合)
  10. DjVu Reader Pro for Mac(DjVu阅读软件)
  11. @autowired注解 抽象类_Spring容器注解注入
  12. vue学习笔记-接口调用-axios
  13. 如何使用工具切换设备ip 电脑和手机怎么如何换ip?
  14. 简单大学生静态HTML网页作品 HTML5+CSS大作业——圣诞节节日(7页) 带轮播特效
  15. iOS描述文件(.mobileprovision)一键申请
  16. 电脑鼠标左键按下去没反应怎么办
  17. 端口被占用怎么办?关闭8080,3000,8000端口被占用
  18. 讯飞星火 VS 文心一言:谁是中文大语言模型的TOP1?
  19. Pythonnbsp;异常处理
  20. 一文彻底搞懂股权投资中GP/LP关系! | 资本智库

热门文章

  1. [原]as3 flash web 应用 (2)批量上传之php页面接收flash传递的数据
  2. Soundiron Bontastic Vintage Italian Chord Organ 复古意大利和弦风琴
  3. 字符串排序算法:低位优先排序(LSD)
  4. 结构体构造和析构函数
  5. 物联网毕设选题 机器视觉人脸识别系统 - 单片机 stm32 嵌入式
  6. azure云上 在线将oracle单实例扩展成oracle dataguard高可用集群的详细过程
  7. 非线性方程求解 :二分迭代法和牛顿迭代法
  8. LLVM 与 Clang 介绍
  9. Wav ,flac,mp3,ogg 等的区别
  10. Linux 系统vim练习简单的 shell script