Python 批次合併圖片到word檔案

2023-10-31 15:00:42

這段程式碼是一個用Python編寫的功能,它將指定資料夾中的所有圖片插入到Word檔案中並儲存。以下是程式碼的主要步驟和功能:

匯入必要的庫

Python中的docx庫用於操作Word檔案,glob庫用於匹配檔案路徑。
from docx import Document
from docx.shared import Inches
import glob

定義函數 insert_images_to_word(image_folder, output_path)

該函數用於將指定資料夾中的所有圖片插入到Word檔案中,並儲存到指定路徑。

def insert_images_to_word(image_folder, output_path):
    try:
        # 建立一個空白的Word檔案物件
        doc = Document()

        # 新增段落
        doc.add_paragraph('這是一個包含多張圖片的Word檔案')

        # 獲取資料夾中的所有圖片檔案路徑
        image_files = glob.glob(image_folder + '/*.png') + glob.glob(image_folder + '/*.jpg')

        # 遍歷圖片檔案路徑列表,逐個新增圖片到Word檔案中
        for image_file in image_files:
            doc.add_picture(image_file, width=Inches(6), height=Inches(3))

        # 儲存Word檔案
        doc.save(output_path)
        return True
    except Exception as e:
        print(e)
        return False

 建立一個空白的Word檔案物件

doc = Document()

新增一個段落到Word檔案中

doc.add_paragraph('這是一個包含多張圖片的Word檔案')

獲取資料夾中的所有圖片檔案路徑

使用glob.glob()函數獲取資料夾中所有的.png.jpg圖片檔案路徑。

image_files = glob.glob(image_folder + '/*.png') + glob.glob(image_folder + '/*.jpg')

遍歷圖片檔案路徑列表,逐個將圖片新增到Word檔案中

利用add_picture()方法將圖片逐個新增到Word檔案中,可以設定圖片的寬度和高度。

for image_file in image_files:
    doc.add_picture(image_file, width=Inches(6), height=Inches(3))

儲存Word檔案到指定路徑

使用save()方法儲存Word檔案到指定的輸出路徑。

doc.save(output_path)

 返回生成結果狀態

如果成功生成Word檔案,則返回True,否則返回False

return True

呼叫函數並輸出結果

最後,根據需要指定圖片所在資料夾路徑和輸出檔案路徑,並呼叫函數進行操作。根據返回值判斷操作是否成功。

# 圖片所在資料夾路徑
image_folder = r'C:\Users\Admin\Desktop\資料核對'

# Word檔案儲存路徑
output_path = r'C:\Users\Admin\Desktop\output.docx'

# 呼叫函數
if insert_images_to_word(image_folder, output_path):
    print('Word檔案已儲存到{}'.format(output_path))
else:
    print('生成Word檔案失敗。')

這樣,程式碼就完成了將指定資料夾中的所有圖片插入到Word檔案並儲存的功能。

完整程式碼一:

from docx import Document
from docx.shared import Inches
import glob


def insert_images_to_word(image_folder, output_path):
    """
    將指定資料夾中的所有圖片插入到 Word 檔案中,並儲存到指定路徑。

    image_folder:圖片所在資料夾的路徑。
    output_path:Word 檔案儲存路徑。
    """
    try:
        # 建立一個空白的Word檔案物件
        doc = Document()

        # 新增段落
        doc.add_paragraph('這是一個包含多張圖片的Word檔案')

        # 獲取資料夾中的所有圖片檔案路徑
        image_files = glob.glob(image_folder + '/*.png') + glob.glob(image_folder + '/*.jpg')

        # 遍歷圖片檔案路徑列表,逐個新增圖片到Word檔案中
        for image_file in image_files:
            doc.add_picture(image_file, width=Inches(6), height=Inches(3))

        # 儲存Word檔案
        doc.save(output_path)
        return True
    except Exception as e:
        print(e)
        return False


# 圖片所在資料夾路徑
image_folder = r'C:\Users\Admin\Desktop\資料核對'

# Word檔案儲存路徑
output_path = r'C:\Users\Admin\Desktop\output.docx'

# 呼叫函數
if insert_images_to_word(image_folder, output_path):
    print('Word檔案已儲存到{}'.format(output_path))
else:
    print('生成Word檔案失敗。')

完整程式碼二:

from docx import Document
from docx.shared import Inches
import glob

# 建立一個空白的Word檔案物件
doc = Document()

# 新增段落
doc.add_paragraph('這是一個包含多張圖片的Word檔案')

# 圖片所在資料夾路徑
image_folder = r'C:\Users\liuchunlin2\Desktop\新建資料夾'

# 獲取資料夾中的所有圖片檔案路徑
image_files = glob.glob(image_folder + '/*.png')+glob.glob(image_folder + '/*.jpg')  # 根據實際情況修改副檔名

print(image_files)

# 遍歷圖片檔案路徑列表,逐個新增圖片到Word檔案中
for image_file in image_files:
    doc.add_picture(image_file, width=Inches(6), height=Inches(3))

# 儲存Word檔案
doc.save('output.docx')