Python读取excel中的图⽚完美解决⽅法excel中有图⽚是很常见的,但是通过python读取excel中的图⽚没有很好的解决办法。
⽹上了⼀种很聪明的⽅法,原理是这样的:
1、将待读取的excel⽂件后缀名改成zip,变成压缩⽂件。
2、再解压这个⽂件。
3、在解压后的⽂件夹中,就有excel中的图⽚。
4、这样读excel中的图⽚,就变成了读⽂件夹中的图⽚了,和普通⽂件⼀样,可以做各种处理。
解压后的压缩包如下:
python脚本如下:
'''
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("It's 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("It's 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 ists(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("It's 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():
act(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)python怎么读入excel
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中的图⽚完美解决⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。