• python 读取Excel文件里面的图片


    python 提取Excel中的图片

    注意:下面的方法只能读取到扩展名为 .xlsx 的Excel. xls不行。

    方法一:

    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("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 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("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():
        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')

    方法二:

    pip install pillow
    pip install pypiwin32
    from PIL import ImageGrab
    import win32com.client as win32
    
    excel = win32.gencache.EnsureDispatch('Excel.Application')
    workbook = excel.Workbooks.Open(r'C:Usersfile.xlsx')
    
    for sheet in workbook.Worksheets:
        for i, shape in enumerate(sheet.Shapes):
            if shape.Name.startswith('Picture'):
                shape.Copy()
                image = ImageGrab.grabclipboard()
                image.save('{}.jpg'.format(i+1), 'jpeg')
    excel.Quit()
  • 相关阅读:
    短视频直播源码开发,如何实现图标点击态的蒙层效果
    直播商城小程序开发,类似于转盘抽奖功能的实现
    Android语音聊天室源码开发,文本内容的分享发送与接收方法简述
    语音交友软件源码开发,axios+Vue实现上传文件显示进度功能
    一对一直播源码开发,前端如何实现整套视频直播技术流程
    04. 多地办公
    03. git分支
    02. git基本命令(适合于单机使用)
    01. git初识
    多人协作解决方案,git flow的使用
  • 原文地址:https://www.cnblogs.com/xiaozengzeng/p/13675920.html
Copyright © 2020-2023  润新知