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('輸入任意鍵退出!')

成果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章