美文网首页
Python-Excel-06-插入图片

Python-Excel-06-插入图片

作者: Data_Python_VBA | 来源:发表于2019-01-16 19:18 被阅读0次

    微信公众号原文

    系统:Windows 7
    语言版本:Anaconda3-4.3.0.1-Windows-x86_64
    编辑器:pycharm-community-2016.3.2

    • 这个系列讲讲Python对Excel的操作
    • 今天讲讲win32com模块对已有Excel文件的操作:在特定位置插入特定大小的图片

    Part 1:示例说明

    1. 示例工作表,A1:E10区域插入图片

    插入图片前

    1.png

    插入图片后

    2.png

    Part 2:代码

    import os
    import win32com
    from win32com.client import constants as c  # 旨在直接使用VBA常数
    current_address = os.path.abspath('.')
    
    excel_address = os.path.join(current_address, "插入图片.xlsx")
    xl_app = win32com.client.gencache.EnsureDispatch("Excel.Application")  # 若想引用常数的话使用此法调用Excel
    xl_app.Visible = False  # 是否显示Excel文件
    wb = xl_app.Workbooks.Open(excel_address)
    sht = wb.Worksheets(1)
    sht.Name = "示例"
    
    photo_address = os.path.join(current_address, "1.png")
    print(photo_address)
    if os.path.exists(photo_address):
        picture_left = sht.Cells(1, 1).Left
        picture_top = sht.Cells(1, 1).Top
        picture_width = sht.Cells(1, 1).Width * 5
        picture_height = sht.Cells(1, 1).Height * 10
        sht.Shapes.AddPicture(photo_address, 1, 1, picture_left, picture_top, picture_width, picture_height)
    
    wb.Save()
    wb.Close()
    

    代码截图

    3.png

    Part 3:部分代码解读

    1. os.path.exists(photo_address),判断文件是否存在
    2. sht.Shapes.AddPicture(photo_address, 1, 1, picture_left, picture_top, picture_width, picture_height),插入图片,以单元格左上角为定位
      • 若想图片效果比较好,那么这一区域单元格的行是一致的,宽也是一致的
      • 关于每个参数的含义,请参考VBA官方解释
    4.png

    本文为原创作品,欢迎分享朋友圈

    常按图片识别二维码,关注本公众号
    Python 优雅 帅气


    12x0.8.jpg

    相关文章

      网友评论

          本文标题:Python-Excel-06-插入图片

          本文链接:https://www.haomeiwen.com/subject/wpqvdqtx.html