python excel图片,用python将excel的内容生成图像
本文主要介绍如何使用Python实现Excel中的读图功能。文中详细讲解了实现步骤,对我们学习Python很有帮助。有需要的可以参考一下。
00-1010一、读取excel文件二。在excel中读取图片(1)使用zipfile模块(2)使用openpyxl读取III。对读取的图片进行处理和补充
目录
我们先来看看如何读取excel文件。读取excel文件的方法有很多。在这里选择openpyxl模块,安装语句如下:
pip安装openpyxl
我们还需要使用一些其他模块,如下所示:
pip安装pyzbar
pip安装枕头
pip安装数量
现在我们可以开始手术了。
在Excel中,有工作簿、表格、单元格等。简单来说,工作簿就是一个excel文件,一个表格就是excel左下角的sheet1和sheet2切换,一个单元格就是一个网格。让我们来读一个excel文件:
从openpyxl导入load_workbook
#加载excel
wb=load_workbook(111.xlsx )
#切换到第一个表
ws=wb[wb.sheetnames[0]]
#获取单元A3
cell=ws[A3]
#输出单位A3的值
打印(单元格.值)
关于openpyxl的更多操作,请参考官方文档https://openpyxl.readthedocs.io/en/stable/tutorial.html.
一、读取excel文件
excel中读取图片的方法有很多种,本文将分享两种方法。
二、读取excel中的图片
Excel本身就是一个压缩文件。我们把excel的后缀改成zip后,手动解压,你会看到xl/media目录下有一些图片文件。这些图片是excel插入的图片。所以我们可以通过解压来读取excel图片,具体代码如下:
导入操作系统
从zipfile导入ZipFile
#解压缩目录
unzip_path=。/解压缩
如果不是OS . path . exists(unzip _ path):
os.mkdir(unzip_path)
使用ZipFile(111.xlsx )作为f:
对于f.namelist():中的文件
#解压缩图片部分的文件
if file . starts with( XL/media ):
f.extract(file,path=unzip_path)
详细解释请参考这篇文章。
(1)使用zipfile模块
上面的操作可以在excel中得到图片,但是有一个缺点。就是我们不知道哪张图片来自哪个单位。在某些情况下,知道图片来自哪个单位是相当有对比性的。下面我们来解决这个问题:
从openpyxl导入load_workbook
wb=load_workbook(111.xlsx )
ws=wb[wb.sheetnames[0]]
#遍历表中的所有支架
对于ws中的图像。_images:
打印(图像)
我们先读取一个表格,然后调用_images获取表格中的所有图片。但是我们还不能操作这张图片。我们将在下一节看到图片的操作。我们先来看看如何知道图片来自哪个单位。我们可以输出锚点。_来自图片。_来自:
从openpyxl导入load_workbook
wb=load_workbook(111.xlsx )
ws=wb[wb.sheetnames[0]]
对于ws中的图像
._images:
# 输出图片的位置信息
print(image.anchor._from)
具体输入内容如下:
<openpyxl.drawing.spreadsheet_drawing.AnchorMarker object>
其中col表示行号,row表示列号。根据这些信息,我们就可以知道图片的单元了。比如col=0,row=0,表示的应该是A1单元。如果col=1,row=1,表示的应该是B2单元。
三、对读取的图片进行处理
对图片处理的操作有很多,这里要看具体需要。这里我分享一下把excel中图片转换成pillow图片和ndarray对象的操作。转换后,我们就可以用numpy和pillow对图片进行各种操作。
import numpy as np
如果我们excel中的图片是二维码,我们就可以进行下面的操作:
import numpy as np
补充
除了以上的方法,还可以通过以下操作实现:
1、将待读取的excel文件后缀名改成zip,变成压缩文件。
2、再解压这个文件。
3、在解压后的文件夹中,就有excel中的图片。
4、这样读excel中的图片,就变成了读文件夹中的图片了,和普通文件一样,可以做各种处理。
具体实现代码
File Name: readexcelimg Author: tim Date: 2018/7/26 19:52 Description: 读取excel中的图片,打印图片路径 先将excel转换成zip包,解压zip包,包下面有文件夹存放了图片,读取这个图片 import os import zipfile # 判断是否是文件和判断文件是否存在 def isfile_exist(file_path): if not os.path.isfile(file_path): print("Its not a file or no such file exist ! %s" % file_path) return False else: return True # 修改指定目录下的文件类型名,将excel后缀名修改为.zip def change_file_name(file_path, new_type=.zip): if not isfile_exist(file_path): return extend = os.path.splitext(file_path)[1] # 获取文件拓展名 if extend != .xlsx and extend != .xls: print("Its not a excel file! %s" % file_path) return False file_name = os.path.basename(file_path) # 获取文件名 new_name = str(file_name.split(.)[0]) + new_type # 新的文件名,命名为:xxx.zip dir_path = os.path.dirname(file_path) # 获取文件所在目录 new_path = os.path.join(dir_path, new_name) # 新的文件路径 if os.path.exists(new_path): os.remove(new_path) os.rename(file_path, new_path) # 保存新文件,旧文件会替换掉 return new_path # 返回新的文件路径,压缩包 # 解压文件 def unzip_file(zipfile_path): if not isfile_exist(zipfile_path): return False if os.path.splitext(zipfile_path)[1] != .zip: print("Its not a zip file! %s" % zipfile_path) return False file_zip = zipfile.ZipFile(zipfile_path, r) file_name = os.path.basename(zipfile_path) # 获取文件名 zipdir = os.path.join(os.path.dirname(zipfile_path), str(file_name.split(.)[0])) # 获取文件所在目录 for files in file_zip.namelist(): file_zip.extract(files, os.path.join(zipfile_path, zipdir)) # 解压到指定文件目录 file_zip.close() return True # 读取解压后的文件夹,打印图片路径 def read_img(zipfile_path): if not isfile_exist(zipfile_path): return False dir_path = os.path.dirname(zipfile_path) # 获取文件所在目录 file_name = os.path.basename(zipfile_path) # 获取文件名 pic_dir = xl + os.sep + media # excel变成压缩包后,再解压,图片在media目录 pic_path = os.path.join(dir_path, str(file_name.split(.)[0]), pic_dir) file_list = os.listdir(pic_path) for file in file_list: filepath = os.path.join(pic_path, file) print(filepath) # 组合各个函数 def compenent(excel_file_path): zip_file_path = change_file_name(excel_file_path) if zip_file_path != : if unzip_file(zip_file_path): read_img(zip_file_path) # main if __name__ == __main__: compenent(/Users/Desktop/test/people.xlsx)
到此这篇关于Python实现读取excel中的图片功能的文章就介绍到这了,更多相关Python读取excel图片内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。