前提:excel文件中包含很多个sheet,我只截图其中一个表的数据并保存到本地
环境:python3.5 + office 2016激活
方法1:
def excel_catch_screen(filename, sheetname, screen_area, img_name=False):
save_path = 'D:\\Auto_folder\\'
pythoncom.CoInitialize() # excel多线程相关
excel = DispatchEx("Excel.Application") # 启动excel
excel.Visible = True# 可视化
excel.DisplayAlerts = False # 是否显示警告
wb = excel.Workbooks.Open(filename,ReadOnly=False) # 打开excel
ws = wb.Sheets(sheetname) # 选择sheet
time.sleep(3)
ws.Range(screen_area).CopyPicture() # 复制图片区域
ws.Paste() # 粘贴 ws.Paste(ws.Range('B1')) # 将图片移动到具体位置
name = str(uuid.uuid4()) # 重命名唯一值
new_shape_name = name[:6]
excel.Selection.ShapeRange.Name = new_shape_name # 将刚刚选择的Shape重命名,避免与已有图片混淆
time.sleep(3)
ws.Shapes(new_shape_name).Copy() # 选择图片
time.sleep(1)
img = ImageGrab.grabclipboard() # 获取剪贴板的图片数据
if not img_name:
img_name = name + ".PNG"