当前位置: 首页 > java >正文

给纯小白的Python操作Word笔记

🧩 一、技术选型

 

库 功能 安装 

python-docx 创建、修改 `.docx`,读写文字/段落/表格/样式 `pip install python-docx` 

pandas(可选) 批量读取 Excel/CSV,作为数据源 `pip install pandas` 

 

---

 

🎯 二、典型使用场景

 

1. 合同/证书/报告批量生成

 

   Word 模板里放好占位符 `{{name}}`、`{{date}}`,一行 Excel 数据生成一份 Word。

2. 自动化报告

 

   把跑数结果直接写进 Word,段落+表格+图表一次性搞定。

3. 质检/审核

 

   自动扫描 Word 里的关键字段、表格内容,做校验。

 

---

 

🛠️ 三、核心 API 速查表

 

任务 代码片段 

打开文档 `doc = Document('模板.docx')` 

查找所有段落 `for p in doc.paragraphs:` 

查找所有表格 `for t in doc.tables:` 

替换段落文字 `p.text = p.text.replace('{{name}}', '张三')` 

替换表格文字 `cell.text = cell.text.replace('{{amount}}', '¥1,234')` 

添加段落 `doc.add_paragraph('新段落')` 

添加表格 `table = doc.add_table(rows=3, cols=2)` 

保存文档 `doc.save('结果.docx')` 

 

---

 

📄 四、最小可运行示例

 

场景:根据 Excel 批量生成“录用通知书”

 

📋 1. 准备模板 `template.docx`

 

```

录用通知书

尊敬的 {{name}} 先生/女士:

您已被我公司 {{department}} 录用,职位 {{position}},月薪 {{salary}} 元,请于 {{onboard_date}} 报到。

```

 

📊 2. Excel `info.xlsx`

 

name department position salary onboard_date 

张三 研发部 后端 15000 2025-09-01 

李四 产品部 产品经理 18000 2025-09-03 

 

🧑‍💻 3. 批量生成脚本 `gen_offer.py`

 

```python

from docx import Document

import pandas as pd

import os

 

# 1. 读取数据

df = pd.read_excel('info.xlsx')

 

# 2. 输出目录

os.makedirs('output', exist_ok=True)

 

# 3. 循环生成

for _, row in df.iterrows():

    doc = Document('template.docx')

 

    # 替换段落

    for p in doc.paragraphs:

        for key, val in row.items():

            p.text = p.text.replace(f'{{{key}}}', str(val))

 

    # 替换表格(如果有)

    for t in doc.tables:

        for row in t.rows:

            for cell in row.cells:

                for key, val in row.items():

                    cell.text = cell.text.replace(f'{{{key}}}', str(val))

 

    # 保存

    filename = f"output/{row['name']}的录用通知书.docx"

    doc.save(filename)

print('全部生成完毕!')

```

 

---

 

⚙️ 五、进阶技巧

 

需求 做法 

保留原格式(加粗、颜色) 用 `runs` 级替换,见下方 

插入图片 `doc.add_picture('sign.png', width=Inches(2))` 

设置字体 `run.font.name = '宋体'`(需配合 `rPr` 样式) 

生成 PDF 先用 `docx2pdf` 或 LibreOffice 命令行转 

邮件自动发送 生成 Word 后用 `smtplib` 发附件 

 

---

 

🧪 六、保留格式的“run”级替换

 

模板里占位符如果设置了加粗/颜色,直接改 `paragraph.text` 会清掉样式,需要逐 `run` 替换:

 

```python

def replace_text_runs(paragraph, old, new):

    """保留样式替换"""

    for run in paragraph.runs:

        if old in run.text:

            run.text = run.text.replace(old, new)

```

 

---

 

✅ 七、踩坑提示

 

坑 解决方案 

`.doc` 不支持 只能处理 `.docx`,老版 Word 先另存为 

中文乱码 保证模板文件 utf-8,必要时用 `python-docx-template` 

图片路径 使用绝对路径或 `os.path.abspath` 

表格样式 复杂样式建议直接做在模板里,只替换内容 

 

---

 

📦 八、一键模板仓库(推荐)

 

不想自己搭脚手架?直接 clone 开源项目:  

- [docxtpl](https://github.com/elapouya/python-docx-template)

 

  支持 Jinja2 语法:`{{name}}`、`{% for item in items %}`,极致简洁。

 

---

 

🎯 总结一句话

 

> “把 Word 当模板,Excel 当数据源,Python 当胶水,一键批量生成。”

 

需要我帮你生成一个可直接运行的完整 demo 压缩包吗?

 

http://www.xdnf.cn/news/17971.html

相关文章:

  • 使用npm/pnpm自身安装指定版本的pnpm
  • 【论文笔记】Multi-Agent Based Character Simulation for Story Writing
  • Vue3从入门到精通:5.2 Vue3构建工具与性能优化深度解析
  • 同创物流学习记录2·电车光电
  • 【八股】计网-计算机网络-秋招
  • Windows MCP.Net:革命性的 .NET Windows 桌面自动化 MCP 服务器
  • 分享一个大数据的源码实现 基于Hadoop的二手车市场数据分析与可视化 基于Spark的懂车帝二手车交易数据可视化分析系统
  • ABB焊接机器人弧焊省气
  • ubuntu远程桌面很卡怎么解决?
  • 深入剖析跳表:高效搜索的动态数据结构
  • JavaScript 逻辑运算符与实战案例:从原理到落地
  • 杂记 02
  • Docker安装——配置国内docker镜像源
  • Python从入门到高手9.3节: 利用字典进行格式化
  • std::copy_if
  • 告别手动优化!React Compiler 自动记忆化技术深度解析
  • 47.分布式事务理论
  • 【大模型微调系列-03】 大模型数学基础直观入门
  • PyInstaller打包Python应用操作备忘
  • 后端学习资料 持续更新中
  • PCA降维理论详解
  • 哈希表五大经典应用场景解析
  • 电脑开机几秒后就停止然后再循环是怎么回事
  • 如何在 FastAPI 中玩转 APScheduler,让任务定时自动执行?
  • get和post请求的区别
  • 【Redis】Redis典型应用——缓存
  • 模板引用(Template Refs)全解析2
  • 英文PDF翻译成中文怎么做?试试PDF翻译工具
  • Java 泛型类型擦除
  • Ceph CSI 镜像删除流程与 Trash 机制失效问题分析文档