Python:把多张图片放在同一个word中

前言:在原部门的最后一天,有个需求,需要分两步完成。

第一步:

有一堆照片在同一个文件夹下,根据excel读取规则,如下图
在这里插入图片描述
因为比较乱,所以需要把图片放在一个个按“门店名称”创建的文件夹下,以供部门同事后续核对

from PIL import Image
from docx import Document
from docx.shared import Inches
from docx import enum
import openpyxl
import shutil
import os
import traceback

file_path = os.path.abspath('.')

#第一部分:把图片根据规则整理到不同的文件夹内
print(os.listdir(file_path))
pic_path = file_path + '\\' + '5G门头点检' + '\\'
# print(pic_path)
data = openpyxl.load_workbook('图片清单.xlsx')
data_sheet = data['Sheet1']
maxrow = data_sheet.max_row + 1
for i in range(2, maxrow):
    store_name = data_sheet["L" + str(i)].value #门店名称
    pic_name = data_sheet["Q" + str(i)].value #图片名称
    old_pic_path = pic_path + pic_name
    new_file_path = file_path + '\\' + store_name
    try:
        os.makedirs(new_file_path) #创建文件夹
    except:
        continue
    finally:
        shutil.copy(old_pic_path, new_file_path)
for pic_file in os.listdir(file_path):
    if os.path.isdir(pic_file):
        print('{}是文件夹'.format(pic_file))
    else:
        print('{}不是文件夹'.format(pic_file))

成果:
在这里插入图片描述

第二步:

等同事核对完后,需要将图片放在一个word内,一页一个门店,顺序为:门店名称——>照片1——>照片2——>照片3——>照片4

#第二部分:把图片根据顺序放在同一个word中
pic_file_list = os.listdir(file_path)
doc = Document()
try:
    for pic_file in pic_file_list:
        if os.path.isdir(pic_file) and pic_file != '5G门头点检':
            store_pic_path = file_path + '\\' + pic_file
            # print(store_pic_path)
            for root, dirs, files in os.walk(store_pic_path):
                doc.add_paragraph(pic_file)
                for file in files:
                    if file.endswith('.jpg') or file.endswith('.png'):
                        try:
                            doc.add_picture(os.path.join(root, file), width=Inches(1.5))  # 添加图, 设置宽度
                        except:
                            jpg_ima = Image.open(os.path.join(root, file))  # 打开图片
                            jpg_ima.save(os.path.join(root, file))  # 保存新的图片
                            doc.add_picture(os.path.join(root, file), width=Inches(1.5))  # 添加图, 设置宽度
                doc.add_page_break() #换页
    doc.save(file_path + '\\' + 'all_pic.docx')
    print('已经全部完成!')
except:
    traceback.print_exc()
finally:
    a = input('输入任意键退出!')

成果:
在这里插入图片描述

发布了90 篇原创文章 · 获赞 106 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_42029733/article/details/103778709