首页 > 编程语言 >python实现Excel指定区域截图

python实现Excel指定区域截图

时间:2023-12-04 13:47:36浏览次数:30  
标签:截图 sheet area python pic Excel import path

方法一:xlwings

import os.path
import time
import uuid
from io import BytesIO
from typing import Union

import xlwings as xw
from PIL import ImageGrab


def excel_grab(excel_path, sheet_name: Union[str, int] = 0, cell_area=None, pic_path=None, visible=False, saved=True):
    """
    Excel指定区域截图
    :param excel_path: Excel文件路径
    :param sheet_name: 工作表名称或索引,0即第一张工作表
    :param cell_area: 截图区域,默认None,不指定时获取有内容的区域截图
    :param pic_path: 截图文件路径,png格式
    :param visible: 截图时是否打开显示Excel
    :param saved: 是否将截图保存到本地
    :return: png路径 或 图片的bytes
    """
    app = xw.App(visible=visible, add_book=False)
    wb = app.books.open(excel_path)
    if isinstance(sheet_name, str):
        sheet = wb.sheets(sheet_name)
    else:
        sheet = wb.sheets[sheet_name]
    if cell_area:
        pic_area = sheet[cell_area]
    else:
        pic_area = sheet.used_range  # 获取有内容的range
    try:
        pic_area.api.CopyPicture()  # 复制图片区域
        sheet.api.Paste()
        pic = sheet.pictures[0]  # 当前图片
        pic.api.Copy()
        time.sleep(.5)  # 等待copy完后再获取剪贴板的截图
        pic.delete()  # 删除sheet上的图片
    except Exception as e:
        print(e)
    finally:
        wb.close()
        app.quit()

    try:
        img = ImageGrab.grabclipboard()  # 获取剪贴板的图片数据
    except Exception as e:
        print(e)
        return '截图失败'
    if saved:
        if not pic_path:
            pic_path = f'{os.path.splitext(excel_path)[0]}_{uuid.uuid4().hex[:10]}.png'
        img.save(pic_path)
        return pic_path
    else:
        f = BytesIO()
        img.save(f, 'png')
        img_data = f.getvalue()
        f.close()
        return img_data

标签:截图,sheet,area,python,pic,Excel,import,path
From: https://www.cnblogs.com/rong-z/p/17874721.html

相关文章

  • Python——第五章:模块和包
    什么是模块?在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多代码按功能分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就可以称......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-35-处理web页面定位toast-上篇
    1.简介在使用appium写app自动化的时候介绍toast的相关元素的定位,在WebUI测试过程中,也经常遇到一些toast(出现之后一闪而过,不留下一点点痕迹),那么这个toast我们这边如何使用playwright进行定位测试呢?今天宏哥就分两篇介绍一下。2.什么是toast?Android中的Toast是一种简易的消......
  • Python 多线程
    多线程类似于同时执行多个不同程序,多线程运行有如下优点:使用线程可以把占据长时间的程序中的任务放到后台去处理。用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度程序的运行速度可能加快在一些等待的任务实现上如用户输......
  • python - 取消 Word 文档编辑限制
    1.安装Spire.DocforPythonpipinstallSpire.Doc2.实例目录内的所有Word文档移除编辑限制importosfromspire.docimport*fromspire.doc.commonimport*path='.\\test'forfilepath,dirnames,filenamesinos.walk(path):forfilenameinfilenames:......
  • python 属性装饰器和对应的setter方法,属性的封装和安全性控制
    当我们在类中定义属性时,通常希望能够对属性的读取和写入进行控制,以确保数据的完整性和安全性。属性装饰器和对应的setter方法提供了一种实现属性封装和安全性控制的方法。属性装饰器是Python的一种语法特性,用于修饰类的方法,使其表现为一个属性而不是一个普通的方法。通过使用属性......
  • vscode建立python项目(转载)
    原文地址:https://blog.csdn.net/shizheng_Li/article/details/115555596问题今天在做python的小项目的时候,需要建立虚拟环境,并且激化它,但是遇到的了问题,如下:PSD:\user\文档\python\python_work\learning_log>python-mvenvll_envPSD:\user\文档\python\python_work\lear......
  • C++-Python_多进程_多线程-协程-异步开发
    python多任务、并发编程等领域并发:宏观上并行,微观上串行并行:宏观上并行,微观上并行并发:I/O密集型作业运行态---阻塞态的转化并行:CPU密集型作业并发(Concurrent)、并行(Parallesim)、多线程(MultiThreaded)、多进程(Multiprocessing)、多任务(Multitasking)、......
  • Python中用requests处理cookies的3种方法
    在接口测试中,大多数项目的接口是需要登录后进行操作的,经常用到requests库进行模拟登录及登录后的操作,下面是我不断踩坑后总结出来的关于登录凭证cookies的3种操作方法。一.用requests.utils.dict_from_cookiejar()把返回的cookies转换成字典1.处理cookies:importreques......
  • [oeasy]python0002_终端_CLI_GUI_编程环境_游戏_真实_元宇宙
    回忆 上次了解了python语言的特点历史悠久功能强大深受好评已成趋势 3大主流操作系统macwindowslinux      添加图片注释,不超过140字(可选)  我们选择linux作为基础系统 ......
  • 浅写一个Python脚本归档Windows的截图
    添加到计划任务每月运行fromdatetimeimportdatetimeimportos#这里使用了Windows的环境变量,需在计划任务中指定你的用户PATH_SCREENSHOTS=r'C:\Users\%USERNAME%\Pictures\Screenshots'PATH_7Z=r'C:\ProgramFiles\7-Zip\7z.exe'ifos.path.isfile(r'C:\Progra......