1、常规 *** 作import
python设置--项目--python解释器--增加软件包Pillow\xlwings
from PIL import Image
import os
import xlwings as xw
2、存放图片的文件夹地址和excel表的引用
filename = r'C:\Users\Administrator\Desktop34567.xlsx' # excel表路径
img_path = 'C:/Users/Administrator/Desktop/ABC/' # 存放图片的文件夹
3、xlwings的代码块和OS的图片列表
说明:ws.range().expand().value 选中表格引用列的数据
app = xw.App(visible=True, add_book=False)
wb = app.books.open(filename)
ws = wb.sheets.active
data = ws.range('A2').expand('down').value # 选中引用列的数据
img_list = os.listdir(img_path) # 获取文件夹下所有图片名称(含扩展名)
4、循环图片并去掉扩展名
for i in img_list:
img_names = i.split(".")[0]
5、循环表格数据和图片名的匹配
for j in range(1, len(data) + 1):
# 引用列和图片名字一样,图片地址加名字(含扩展名)
if data[j - 1] == img_names:
img_name = os.path.join(img_path, '%s' % i)
6、插入图片,并且和单元格大小相匹配
说明:
首先用Image加载图片;
其次用ws.range().api.前置——按清除原有批注ClearComments()、增加批注AddComment();
再次批注图形ws.range().api.Comment.Shape——Width/Height宽高设置、Fill.UserPicture()填充图片
try:
# 插入图片在批注,设置和批注宽高
img = Image.open(img_name).convert('RGB')
ws.range('A' + str(j+1)).api.ClearComments()
ws.range('A' + str(j+1)).api.AddComment()
ws.range('A' + str(j+1)).api.Comment.Shape.Width = 280
ws.range('A' + str(j+1)).api.Comment.Shape.Height = 220
ws.range('A' + str(j+1)).api.Comment.Shape.Fill.UserPicture(img_name)
except:
print('图片库无%s图片' % img_name)
7、保存关闭表格退excel应用
wb.save(filename)
# wb.close()
# app.quit()
8、全部代码展示
from PIL import Image
import os
import xlwings as xw
filename = r'C:\Users\Administrator\Desktop34567.xlsx' # excel表路径
img_path = 'C:/Users/Administrator/Desktop/ABC/' # 存放图片的文件夹
app = xw.App(visible=True, add_book=False)
wb = app.books.open(filename)
ws = wb.sheets.active
data = ws.range('A2').expand('down').value # 选中引用列的数据
img_list = os.listdir(img_path) # 获取文件夹下所有图片名称(含扩展名)
for i in img_list:
img_names = i.split(".")[0]
for j in range(1, len(data) + 1):
# 引用列和图片名字一样,图片地址加名字(含扩展名)
if data[j - 1] == img_names:
img_name = os.path.join(img_path, '%s' % i)
try:
# 插入图片在A列批注,设置和批注宽高
img = Image.open(img_name).convert('RGB')
ws.range('A' + str(j+1)).api.ClearComments()
ws.range('A' + str(j+1)).api.AddComment()
ws.range('A' + str(j+1)).api.Comment.Shape.Width = 280
ws.range('A' + str(j+1)).api.Comment.Shape.Height = 220
ws.range('A' + str(j+1)).api.Comment.Shape.Fill.UserPicture(img_name)
except:
print('图片库无%s图片' % img_name)
wb.save(filename)
# wb.close()
# app.quit()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)