openxlpy 在excel中批量插入图片 根据单元格内容插入图片 图片随单元格大小变化而变化 AnchorMarker python

需求:

  1. 根据单元格的文本内容,插入相同名称的图片;
  2. 图片大小与单元格大小相同

要用到OS库和openxlpy库

步骤:

  1. 遍历excel区域里面的单元格,看是否有文本内容
  2. 根据文本内容确定图片的名称,从而拿到图片地址,确定图片对象
  3.  将图片对象嵌入到单元格中
import os
from openpyxl import load_workbook
from openpyxl.drawing.image import Image
from openpyxl.drawing.spreadsheet_drawing import AnchorMarker, TwoCellAnchor


excel_file =r"D:\图片调整测试\111.xlsx" #excel地址,别忘记.xlsx
image_folder = r"D:\图片" #图片地址
workbook = load_workbook(excel_file) 
ws = workbook['Sheet1'] #要插入的工作表

for row in ws.iter_rows():
    for cell in row:
        # 如果单元格中有文本内容
        if cell.value and isinstance(cell.value, str):
            image_name = cell.value + '.jpg'
            image_path = os.path.join(image_folder, image_name)
            img = Image(image_path)
            #处理锚点,得到图片的正确位置
            m= cell.row #行号
            n = cell.column #列号
            _from = AnchorMarker(n-1, 50000, m-1, 50000)
            to = AnchorMarker(n, -50000, m, -50000)
            img.anchor = TwoCellAnchor('twoCell', _from, to)
            ws.add_image(img)
    workbook.save(excel_file)

 试过很多种方法,将图片的宽高设定成单元格行高列宽一致,但是这样子有个问题,图片和单元格的长宽单位不一致,而且换算起来非常麻烦,还会出现图片大小不对的情况,所以放弃了。

使用锚点去定位图片,而且是嵌入图片,后续改变单元格大小行宽的话图片也可以随之改变大小,非常灵活,参考如何用python向excel中以嵌入单元格的方式插入图片? - 知乎里面“中等难度的贪吃蛇”这位的答案,经过多次验证,代码可以顺利运行

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值