Python 将Excel文件某个sheet中的内容 复制成一个图片

我们工作中,发送邮件时,有时只需要一个附件即可,不过有时也需要将附件中的文件粘贴成一个图片放在正文中,如果要实现自动发送邮件功能时,就得攻克这种情况。

下面我们先攻克将Excel文件中某个sheet中的内容复制成一个图片的功能。

def create_save_img(file_path, sheetname,img_name):
    '''
    Parameters
    ----------
    file_path : string
        Excel文件的路径,最好是绝对路径.
    sheetname : string
        需要复制成图片的Excel文件的sheet名.
    img_name : string
        最终图片保存的名字及路径.

    Returns
    -------
    None.

    '''
    # 读取excel内容转换为图片
    from PIL import ImageGrab
    import xlwings as xw
    import pythoncom
    import os
    import time
    os.system('taskkill /IM EXCEL.exe /F')
    pythoncom.CoInitialize()
    # 使用xlwings的app启动
    app = xw.App(visible=False, add_book=False, )
    # 打开文件
    file_path = os.path.abspath(file_path)
    wb = app.books.open(file_path)
    # 选定sheet
    sheet = wb.sheets(sheetname)
    # 获取有内容的区域
    all = sheet.used_range
    # 复制图片区域
    all.api.CopyPicture()
    # 粘贴
    sheet.api.Paste()
    # 当前图片
    pic = sheet.pictures[-1]
    # 复制图片
    pic.api.Copy()
    time.sleep(3)# 延迟一下操作,不然获取不到图片
    # 获取剪贴板的图片数据
    img = ImageGrab.grabclipboard()
    # 保存图片
    img.save(img_name)
    # 删除sheet上的图片
    pic.delete()
    # 不保存,直接关闭
    wb.close()
    # 退出xlwings的app启动
    app.quit()
    pythoncom.CoUninitialize()  # 关闭多线程
    # os.remove(file_path)

基本是使用 xlwings Excel写入操作,ImageGrab 剪贴板

#路径
data_path = "xxx/"
filename = data_path+"复制文件格式例子06.xlsx"
create_save_img(filename,'Sheet1',data_path+'Excel复制成图片的例子.png')
复制文件格式例子06.xlsx 文件内容如下:

 

 最终图片如下:

 

 

结束。

 

posted on 2022-07-25 15:24  小小喽啰  阅读(4904)  评论(2编辑  收藏  举报