需求
在工作过程中遇到的问题:给了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()