openxlpy 在excel中批量插入图片 根据单元格内容插入图片 图片随单元格大小变化而变化 AnchorMarker python
需求:
- 根据单元格的文本内容,插入相同名称的图片;
- 图片大小与单元格大小相同
要用到OS库和openxlpy库
步骤:
- 遍历excel区域里面的单元格,看是否有文本内容
- 根据文本内容确定图片的名称,从而拿到图片地址,确定图片对象
- 将图片对象嵌入到单元格中
import os
from openpyxl import load_workbook
from openpyxl.drawing.image import Image
from openpyxl.drawing.spreadsheet_drawing import AnchorMarker, TwoCellAnchorexcel_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中以嵌入单元格的方式插入图片? - 知乎里面“中等难度的贪吃蛇”这位的答案,经过多次验证,代码可以顺利运行
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
