我们工作中,发送邮件时,有时只需要一个附件即可,不过有时也需要将附件中的文件粘贴成一个图片放在正文中,如果要实现自动发送邮件功能时,就得攻克这种情况。
下面我们先攻克将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 文件内容如下:

最终图片如下:

结束。
原创文章,作者:wure,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/276882.html