用python将excel的有效内容+格式存储成png图像

转载:https://www.cnblogs.com/cgmcoding/p/16517494.html
最近在做一个工作的时候需要用到这个技能,因此上网搜了一下,这段代码是很好的用的。

Parameters

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

Function

def create_save_img(file_path, sheetname,img_name):
    # 读取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)

上面是一段函数,调用后可以直接在对应路径里看到图片,格式和内容都有保存。Nice!顺便贴一段获取excel的sheetname,方便后面用:

from openpyxl import load_workbook
def get_sheet_names(excel_file):
    workbook = load_workbook(excel_file)
    sheet_names = workbook.sheetnames
    return sheet_names

# 示例用法
excel_file = "data.xlsx"  # Excel文件路径
sheet_names = get_sheet_names(excel_file)
print(sheet_names)

打印当前data.xlsx下的所有sheetname,可以和上面的代码混着用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容