操作时,一定少不了与Excel表格的交互,我们通常是用pandas处理表格数据,但大多数情况下,都是读取表格中的数值进行分析。

那么你知道如何使用Python读取Excel中的图片?又如何使用Python直接往Excel中写入图片?甚至使用Python制作一个Excel可视化大屏?

因为图片的存储格式与数字数据格式不一样,所以实现起来稍显复杂,本文就将对以下两个部分进行深入讲解:

的报错现象。这里介绍几个国内的镜像,大家可以尝试其中一个,速度会比单纯的pip快10倍不止。地址如下:

注意:如果是原生态的cmd窗口安装的,会提示加个–user命令,读者按照指示即可。

“第一种:将xlsx后缀名改为zip形式,即进行压缩。而后读取里面存储图片的文件,将里面的图片取出来。第二种:用提取到粘贴板中的方法将图片保存到JPG、PNG等格式中”

两种方法各有缺点和优点,第一种方法缺点是代码量比较长,优点是万能,Excel的所有格式都可以运用。

文件,里面有四个工作表,每个工作表都有一张数据可视化图。例如工作表3中的气泡图如下:

的文件位置,在D盘的根目录,读者需要做调整的话在path那行代码修改即可。

函数用于返回指定的文件夹包含的文件或文件夹的名字的列表。再用for循环遍历这个列表,将

函数重命名对应的文件夹。count是用来告诉用户这个文件夹有多少个文件的,用于检验。

是指存放zip的文件夹路径,saveDir指存放提取后的图片的指定路径。用

这里强调下,本章代码采用的路径,除了上面讲过的path外,其他都用绝对路径,因为如os模块和zipfile模块,这些模块用绝对路径更不会报错。

其实是不行的,大家可以去尝试一下。原因是,你每次del广域网一个列表的元素,列表的数量值会一直在变而不是固定的,这样就会导致超出索引的错误。

这个路径下,有了这个目标后,我们再用for循环遍历zip文件里的所有文件,找到路径下的图片。

“azip.open()是zipfile模块里的打开命令。相对应的,就有azip.close()这个命令,这个命令再整个程序运行完后必须运训,因为不仅可以清理所占空间,而且如果你需要还原xlsx文件格式的话,你就必须得关闭,不然会报错。Image.open()是模块Pillow模块的读取图片函数,也算是我们本章最重要的函数之一了,与其搭配的是Image.save()函数,是用来存储的。中间插着一段代码img.convert(RGB),这个一般都是要用到的,我们存储的图片大多数是有色的,也就是RGB图像,如果是黑白的话就要调一下参数。有兴趣的读者可以自行查阅文献。”

从上图可以看到,与方法一的效果相比,基本一致,除了没有进行压缩,下面简单说一下代码

接下来就是进行for嵌套for,第一个for循环的目的是遍历所选Excel文件中的工作表,我们有四张图片放在

的四个不同的工作表里。第二个for循环是用来遍历每个工作表中的图片并复制到粘贴板中的。

函数是用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。这里的意思就是存放每张图片数据信息的索引。i是数据下标,shape是数据

“shape.Name.startswith(Picture)是判断获到的shape里面名字信息中的开头是否符合pitcure,如果是,则返回True。shape.Copy()函数是对一个一个字典的浅复制(拷贝)。简单来说就是只在程序中的复制。ImageGrab.grabclipboard()函数是方法二的精髓,这个函数是抓取当前剪贴板的快照,返回一个模式为“RGB”的图像或者文件名称的列表。如果剪贴板不包括图像数据,这个函数返回空。读者可以使用函数isinstance()来检查该函数返回的是一个有效图像对象或者其他数据。image.convert(RGB).save(rD:\{}.jpg.format(num), jpeg)这段语句,是将得到的image以jpg的格式存储。这里的jpeg其实就是jpg,只不过模块里以jpeg代替jpg。”

进行转换的话,读出来的图像是RGBA四通道的,A通道为透明通道,运出来是没有图像显示的。因此使用

至此,我们就讲完了使用Python提取Excel中图片的两种方法,大家可以根据自己的情况来选择如恶化提取Excel中的图片。

在讲完如何用Python提取Excel中图片之后,下面我们将讲解如何用Python将图片写入到Excel文件中。

“x_scale和y_scale参数可以用于水平及垂直的缩放图片。url参数可以为图片添加超链接/url,tip参数为含有超链接的图片提供可选的鼠标悬停时的提示信息image_data参数用于在io.BytesIO中添加内存中的字节流,一般不用positioning参数可以用来控制图片对象的位置”

这里用一份数据简单的画出一个折线图,数据是一份广汇汽车的股票数据,从8月底到10月底的数据。以收盘价和时间画一个简单的折线图.

可以看到,我们使用Matplotlib生成的折线图入到我们预定的指定位置中!

至此,本文就结束了,相信你已经学会如何使用Python与Excel图片之间的交互,并能够结合具体的需求进行批量操作!

发表回复

您的电子邮箱地址不会被公开。