使用 Flask 和 Python 自動化 Word 分割工具
在這篇文章中將介紹如何利用 Python 和 Flask 開發一個簡單的工具,來實現將 Microsoft Word 文件按照節(Section)分割為多個文件的功能。同時我們會使用 Bootstrap 來提升前端頁面的可讀性和操作便利性。 專案功能簡介 本專案的目標是提供一個 Web 介面,讓用戶可以: 上傳一個包含多個 Sections 的 Word 文件。 上傳一個對應的文件名稱清單。 根據名稱清單分割原始文件並生成多個 Word 文件。 自動刪除頁腳並套用新頁腳內容(若需要)。 這個工具對需要批量處理 Word 文件的人來說是非常實用的,比如需要將長文檔分解為不同部門的文件時。 技術架構與工具 後端框架:Flask 文檔操作:pywin32(使用 Windows COM 操作 Word) 前端框架:Bootstrap 5 文件上傳與處理:Flask 的 request.files 目錄管理:os 模組 核心程式碼解析 文件分割功能 以下是實現文件分割功能的核心程式碼片段: def split_by_section_with_names(input_doc_path, output_dir, filenames): pythoncom.CoInitialize() # 明確初始化 COM try: word_app = win32.Dispatch("Word.Application") word_app.Visible = False doc = word_app.Documents.Open(input_doc_path) total_sections = doc.Sections.Count if len(filenames) + 1 < total_sections: doc.Close(False) word_app.Quit() return f"Error: Insufficient filenames provided. Expected at least {total_sections - 1}, got {len(filenames)}." for i in range(1, total_sections): section_range = doc.Sections(i).Range new_doc = word_app.Documents.Add() section_range.Copy() new_doc.Range().Paste() for sec_idx in range(1, new_doc.Sections.Count + 1): sec = new_doc.Sections(sec_idx) remove_and_set_footer(sec) output_path = os.path.join(output_dir, f"{filenames[i - 1]}.docx") new_doc.SaveAs2(output_path, FileFormat=WD_FORMAT_XML_DOCUMENT) new_doc.Close(False) doc.Close(False) word_app.Quit() return "Split completed successfully. Files saved to output directory." finally: pythoncom.CoUninitialize() # 確保釋放 COM 關鍵功能解析 初始化與操作 Word 文件: ...