栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python表格单元格批注批量插图xlwingsospillow教程,手把手代码讲解

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python表格单元格批注批量插图xlwingsospillow教程,手把手代码讲解

1、常规操作import

python设置--项目--python解释器--增加软件包Pillowxlwings

from PIL import Image
import os
import xlwings as xw

2、存放图片的文件夹地址和excel表的引用

filename = r'C:UsersAdministratorDesktop1234567.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:UsersAdministratorDesktop1234567.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()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/850736.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号