上一篇我們學會了如何用 /open-word
開啟 Word 並寫入文字。
但有時候,我們並不想新建文件,而是想在現有的 Word 文件裡直接修改內容。
這就是 /modify-word
的用途!
這個 API 可以:
@app.post("/modify-word")
def modify_word_document(request: WordRequest):
"""
修改已開啟的 Word 文件,用新內容取代舊內容。
"""
word_app = None
try:
pythoncom.CoInitialize()
try:
word_app = win32.GetObject(Class="Word.Application")
except:
return {"status": "error", "message": "錯誤:找不到已開啟的 Word 應用程式。請先開啟 Word。"}
if word_app.Documents.Count == 0:
return {"status": "error", "message": "錯誤:沒有已開啟的 Word 文件。"}
doc = word_app.ActiveDocument
try:
# 方法1:選擇全部內容並替換
word_app.Selection.WholeStory()
word_app.Selection.Delete()
word_app.Selection.TypeText(request.content)
except:
try:
# 方法2:使用Range替換
doc.Range().Text = request.content
except:
# 方法3:清除所有段落並添加新內容
doc.Content.Delete()
doc.Content.InsertAfter(request.content)
return {"status": "success", "message": f"已成功修改 Word 文件,新增:'{request.content}'"}
except Exception as e:
return {"status": "error", "message": f"修改 Word 時發生錯誤: {e}"}
finally:
try:
pythoncom.CoUninitialize()
except:
pass
逐行拆解:
win32.GetObject(Class="Word.Application")
if word_app.Documents.Count == 0:
Selection
→ 全選後刪掉,再打字輸入新內容。Range
→ 直接把文件文字整個替換掉。使用者發送請求:
POST http://127.0.0.1:8000/modify-word
Content-Type: application/json
{
"content": "這是新的內容,已覆蓋掉舊的!"
}
API 連到 Word → 確認文件存在。
把內容清掉,改成新的文字。
回傳成功訊息:
{ "status": "success", "message": "已成功修改 Word 文件,新增:'這是新的內容,已覆蓋掉舊的!'" }