Python实现将图片嵌入excel表格

2022-09-13  本文已影响0人  开心的小哈

需求

在工作过程中遇到的问题:给了5个文件夹,文件夹里有许多图片,因需要看图片记录问题,故需要将图片放入excel中便于记录
解决方案:
环境:windows10,python3.10,openpyxl

from openpyxl import Workbook, load_workbook
from openpyxl.drawing.image import Image
from openpyxl.drawing.spreadsheet_drawing import AnchorMarker, TwoCellAnchor

import os
## 循环便利文件
class Generate(object):
    def __init__(self,file_name,path_name):
        self.file_name=file_name
        self.path_name = path_name
        pass
    def itere(self):
        wb = Workbook()# 使用openpyxl创建新的workbook
        allfiles = os.listdir(self.path_name)
        a:int=0
        for i in allfiles:

            path = os.path.join(self.path_name, i)
            filenames = os.listdir(path)
            pathnames = [os.path.join(path, filename) for filename in filenames]# 将所有文件夹目录进行便利,拿到文件夹下方的文件名
            print(pathnames)
            # 按分类创建sheet
            ws = wb.create_sheet(i, a)# 根据文件夹名称创建sheet
            ws.cell(row=1, column=1, value='图片')# 设置第一行的字段
            ws.cell(row=1, column=2, value='文件地址')
            ws.cell(row=1, column=3, value='图中问题')

            m=0
            for j in pathnames:#循环本地图片
                # m+1+1从单元格第二行开始循环
                ws.cell(row=m+1+1, column=2, value=j)# 填写文件地址字段
                img = Image(j)# 创建openpyxl的Image对象
                _from = AnchorMarker(0, 50000, m+1, 50000)# 创建锚标记对象,设置图片所占的row
                to = AnchorMarker(1, -50000, m+1+1, -50000)# 创建锚标记对象,设置图片所占的row 从而确认了图片位置
                img.anchor = TwoCellAnchor('twoCell', _from, to)# 将锚标记对象设置图片对象的锚属性,图形就具备了所在位置
                ws.add_image(img)# 添加图片
                m+=1
            a+=1
        # print(allfiles)
        wb.save('test.xlsx')

print('请输入要转换的目录')
dir=r'C:\Users\sj176\Desktop\分类'
ge=Generate('11',dir)
ge.itere()

最终效果

image.png
上一篇下一篇

猜你喜欢

热点阅读