在image_path 输入你想要插入的图片的本地地址,image这一列,就是接下来会插入图片对应的列
比如:
该图片地址要保证和本地图片存放的地址对应上,如果地址对应不上,会出现报错。
代码如下:
import os
from openpyxl import load_workbook
from openpyxl.drawing.image import Image
# excelPath :Excel文件的路径
# sheetName :Excel文件中要操作的sheet名称
# picPathColunmNumber :图片全路径所在的列索引[从1开始](列索引1、2、3、4...)
# writeColunmName :图片要插入的列名(列名:A、B、C、D...)
# imgWidth :图片宽度
# imgHight :图片高度
# columnWidth :图片列宽度
# rowHight :每行高度
# 插入图片
def addImgToExcel(excelPath, sheetName, picPathColunmNumber, writeColunmName, imgWidth, imgHight, columnWidth,
rowHight):
# 加载Excel文件并读取指定Sheet
wb = load_workbook(excelPath)
ws = wb[sheetName]
# 获取整个sheet的最大行数
Max_RowNumber = ws.max_row
# 从表格第二行开始插入图片
for rowid in range(2,Max_RowNumber+1):
# 设置行高(除去第一行)
ws.row_dimensions[rowid].height = rowHight
# 取到第N行第N列的值(图片的全路径)
# picPath = "./image/B00EVB04NC.jpg"
picPath = ws.cell(rowid, picPathColunmNumber).value
# 对得到的路径进行判断
if picPath and os.path.exists(picPath):
# 设置图片尺寸大小
img = Image(picPath)
img.width = imgWidth
img.height = imgHight
# 写入图片
ws.add_image(img, str(writeColunmName) + str(rowid))
# 列宽
ws.column_dimensions[writeColunmName].width = columnWidth
print(f"插入图片成功,i= {rowid},剩余{1751-rowid}个")
else:
print("插入图片失败")
continue
wb.save(excelPath)
# 方法入口
if __name__ == '__main__':
addImgToExcel('0616_3.xlsx', 'demo', 1, 'B', 65, 71, 8, 55)