https://blog.csdn.net/wuyoudeyuer/article/details/128185284
# -*- coding: utf-8 -*-
# @Time : 2022-12-05
# @Author : Carl_DJ
'''
实现功能:
在excel中,对应的名称后面,插入图片
'''
import openpyxl,PIL
from openpyxl.drawing.image import Image
import os
#excel文件路径
excel_path = './pic/image.xlsx'
#图片名称为A列
img_name_column = 'A'
#图片写入B列
img_column = 'B'
#读取图片的地址
img_path = './data/picture'
#转换图片格式,强制转换成jpg格式
# img_type = PIL.Image.open(img_path).convert("RGB")
# img_type.save(img_path, 'jpeg')
#打开excel文件
wb = openpyxl.load_workbook(excel_path)
#获取sheet页
ws = wb.active
for i, v in enumerate(ws[img_name_column], start=1):
#图片路径
img_file_path = os.path.join(img_path, f"{v.value}.jpg")
#获取图片
img = Image(img_file_path)
#设置图片的大小
img.width, img.height = (110, 110)
# 设置表格的宽20和高85
ws.column_dimensions[img_column].width = 20
ws.row_dimensions[i].height = 85
# 图片插入名称对应单元格
ws.add_image(img, anchor=img_column + str(i))
#保存
wb.save(excel_path) # 保存
#关闭
wb.close()
print(f'保存完成')
以下是一个示例程序,可以实现将指定目录下的所有图片存储到Excel单元格内。注意需要安装openpyxl库和Pillow库。
import os
from openpyxl import Workbook
from openpyxl.utils import get_column_letter
from openpyxl.drawing.image import Image
# 设定目录和Excel工作簿名称
directory = "path/to/images/"
workbook_name = "images.xlsx"
# 创建新工作簿
wb = Workbook()
sheet = wb.active
# 遍历目录下的所有图片文件
for i, filename in enumerate(os.listdir(directory)):
if filename.endswith(".jpg") or filename.endswith(".png"):
# 打开图片并将其存储到Excel单元格中
img = Image(directory + filename)
sheet.add_image(img, f'A{i + 1}')
# 调整单元格大小以适应图片
for column_cells in sheet.columns:
length = max(len(str(cell.value)) for cell in column_cells)
sheet.column_dimensions[get_column_letter(column_cells[0].column)].width = length
# 保存工作簿
wb.save(workbook_name)
以上代码会将指定目录下所有的.jpg或.png文件存储到Excel单元格中,并将单元格大小调整为适应图片大小。需要注意的是,如果目录下有其他类型的文件,程序会抛出异常并停止运行。可以根据实际情况调整程序逻辑和异常处理方式。