如何用Python的docx库在Word文档中间插入文本并填充Excel数据?
Hey there! Let's tackle your questions clearly and with practical, actionable examples:
Absolutely! The python-docx library gives you full access to a Word document's structure—including paragraphs, text runs (segments with consistent formatting), and tables. You can easily target specific positions (like a placeholder phrase) to insert or replace text, no need to rebuild the entire document from scratch.
Based on your scenario, here's a step-by-step implementation that pulls names from Excel and drops them exactly where your placeholder lives in the Word document:
Step 1: Install required tools
First, make sure you have the necessary packages installed:
pip install python-docx pandas
Step 2: Full working code example
This script reads a name from Excel, locates the placeholder in your Word template, and replaces it while preserving the original formatting:
import pandas as pd from docx import Document # 1. Fetch the name from your Excel file # Adjust the file path and column/index to match your Excel structure excel_file = "your_names_data.xlsx" name_df = pd.read_excel(excel_file) # Example: Grab the first name from the first column (e.g., Marc Henry Richard) target_name = name_df.iloc[0, 0] # 2. Open your Word template document word_template = "your_word_template.docx" doc = Document(word_template) # 3. Find the placeholder and insert the name placeholder = "请在此插入姓名" for paragraph in doc.paragraphs: if placeholder in paragraph.text: # Simple replacement (keeps the paragraph's original formatting) paragraph.text = paragraph.text.replace(placeholder, target_name) # Optional: If you want to style the name (e.g., bold it), use this approach instead: # paragraph.clear() # paragraph.add_run("建筑由:") # styled_name = paragraph.add_run(target_name) # styled_name.bold = True # Add custom formatting here # paragraph.add_run(" 段落3") # Append the rest of your original paragraph content break # Stop after the first match (remove this line if you have multiple placeholders) # 4. Save the finished document doc.save("final_word_document.docx")
Quick tips for edge cases:
- If your placeholder is inside a table, loop through table rows and cells instead of
doc.paragraphsto find it. - For bulk processing (multiple names → multiple Word docs), wrap the Word manipulation logic in a loop over your Excel rows.
- The styled replacement method lets you tweak the inserted name's appearance (font, color, bold) without breaking the rest of the document's layout.
内容的提问来源于stack exchange,提问作者lekythos




