python 使用xlwings 实现excel 内容截图


import xlwings as xw
from PIL import ImageGrab
import time


def excel_save_img(excel_path, save_path='', sheet=0, img_name="tmp", img_suffix="png"):
    app = xw.App(visible=True, add_book=False)
    # 1. 使用 xlwings 的 读取 path 文件 启动
    wb = app.books.open(excel_path)

    # 2. 读取 sheet
    sht = wb.sheets[sheet]

    # 3. 获取 行与列
    nrow = sht.api.UsedRange.Rows.count
    ncol = sht.api.UsedRange.Columns.count
    print(nrow)
    print(ncol)

    # 4. 获取有内容的 range
    range_val = sht.range(
        (1, 1),  # 获取 第一行 第一列
        (nrow, ncol)  # 获取 第 nrow 行 第 ncol 列
    )
    print(range_val.value)

    # 5. 复制图片区域
    range_val.api.CopyPicture()
    # sleep 3s, 解决缓存问题
    time.sleep(3)

    # 6. 粘贴
    sht.api.Paste()

    pic = sht.pictures[0]  # 当前图片
    pic.api.Copy()  # 复制图片

    img = ImageGrab.grabclipboard()  # 获取剪贴板的图片数据
    img_file = img_name + "." + img_suffix
    if save_path:
        img_file = save_path + '/' + img_file
    img.save(img_file)  # 保存图片
    pic.delete()  # 删除sheet上的图片

    wb.close()  # 不保存,直接关闭
    app.quit()  # 退出


path = "tmp.xlsx"

excel_save_img(excel_path=path)

声明:张先生的博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - python 使用xlwings 实现excel 内容截图


选择自己所爱的,然后爱自己所选择的!