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

用python的python-docx模块读取、修改docx文件并批量替换关键字

安装python-docx

打开命令提示符窗口,输入

pip install python-docx

出现以下界面表示安装成功
在这里插入图片描述

添加文本

每个document包含多个paragraph,每个paragraph有多个run,每个run包含有:text文本,font字体,color颜色,字号
添加文本

# 打开新的文件,添加文本并保存
from docx import Document 

docf = "D:\\python\\new.docx" 

doc = Document()
#添加一个标题
doc.add_heading('这是标题',level=1)
#添加一个段落
p = doc.add_paragraph('这是一个段落')
#段落中添加一个run
p.add_run('这是同一段落中的另一行文本。')
#保存
doc.save(docf)

得到
在这里插入图片描述

设置文本粗体、斜体

#改变run的样式
#加粗
from docx import Document 
docf = "D:\\python\\new.docx" 

doc = Document()
#添加一个段落
p = doc.add_paragraph('这是一个段落')
#加粗
run = p.add_run('这是粗体')
run.bold = True
#或者p.add_run("这是粗体").bold = True

#斜体
p2 = doc.add_paragraph('这是一个段落')
run = p2.add_run('这是斜体')
run.italic = True
#或者p2.add_run("我是斜体文字块").italic = True

doc.save(docf)

得到
在这里插入图片描述

添加图片

from docx import Document 
from docx.shared import Inches

docf = "D:\\python\\new.docx" 
doc = Document(docf)
doc.add_picture('d:\\python\\image.png', width=Inches(3.0))  # 图片宽度设置为3英寸
doc.save(docf)

添加表格

from docx import Document 
docf = "D:\\python\\new.docx" 
doc = Document(docf)

table = doc.add_table(rows=2, cols=3) #添加2行3列表格
hdr_cells = table.rows[0].cells #获取第一行所有cell
hdr_cells[0].text = '列 1' #cell设置文本
hdr_cells[1].text = '列 2'
hdr_cells[2].text = '列 3'
row_cells = table.rows[1].cells
row_cells[0].text = '行 1, 列 1'
row_cells[1].text = '行 1, 列 2'
row_cells[2].text = '行 1, 列 3'
doc.save(docf)

读取文本

读取所有run中的文本

from docx import Document 
docf = "D:\\python\\new.docx" 
doc = Document(docf)

for p in doc.paragraphs:
    for r in p.runs:
        print(r.text)

修改文本

from docx import Document 
docf = "D:\\python\\new.docx" 
doc = Document(docf)

doc.paragraphs[0].runs[0].text="新文本"#修改第1个段落第1个run的文本
doc.save(docf)

读取修改表格

在Document中,所有表格保存在doc.tables中
获取表格单元格的值

from docx import Document 
docf = "D:\\python\\new2.docx" #有表格的docx文件
doc = Document(docf)
table = doc.tables[0] #第1个表格
rowcell = table.row_cells(0) #第1行的所有cell
cell = rowcell[0] #第1行第1列的cell

print(cell.text) #输出cell的值
cell.text = "新值" #修改cell的值

doc.save(docf)

保留格式替换文本的内容

模板为,讲关键字 “姓名” 替换为 需要填写的姓名
在这里插入图片描述

from docx import Document 

docf = "D:\\python\\jiangzhuang.docx" 

doc = Document(docf)

#分别输出对应三个名字的文件
names=['小明','小红','张强'] 
for name in names:
    doc = Document(docf)
    for p in doc.paragraphs:
        for r in p.runs:
            if r.text == '姓名':
                r.text = r.text.replace(r.text,name)
    doc.save("D:\\python\\" +name+".docx")

得到3个文件
在这里插入图片描述
姓名被替换为小红
在这里插入图片描述
保留了原有的格式
更多有关格式和关键字识别参考python-docx实现保留原格式的批量替换_python docx 替换-CSDN博客

相关文章:

  • [创业之路-305]:从时域、从频率两个不同的角度看股票的趋势和买入和卖出时机
  • ML.NET库学习008:使用ML.NET进行心脏疾病预测模型开发
  • 【函数题】6-12 二叉搜索树的操作集
  • 大语言模型简史:从Transformer(2017)到DeepSeek-R1(2025)的进化之路
  • 【20250216】二叉树:二叉树的层序遍历Ⅱ
  • 设置默认构建变体 Build Variant
  • Ubuntu24.04无脑安装docker(含图例)
  • Linux、Docker与Redis核心知识点与常用命令速查手册
  • PPT工具集
  • Javascript的数据类型
  • 开始第一个Pod与Deployment
  • Transformer多头注意力并行计算原理与工业级实现:从数学推导到PyTorch工程优化
  • C++上机_日期差值
  • C++17 中 std::size、std::empty 和 std::data 非成员函数介绍
  • VSCode 接入DeepSeek V3大模型,附使用说明
  • 【golang】channel带缓存和不带缓存的区别,应用场景解读
  • Spring MVC多语言支持揭秘:让你的应用走向世界
  • 轻量级分组加密算法RECTANGLE
  • 网络工程师 (41)IP协议、IP地址表示方法
  • 大语言模型中one-hot编码和embedding之间的区别?
  • 商务部:中方敦促美方尽快停止232关税措施
  • 时隔3年俄乌直接谈判今日有望重启:谁参加,谈什么
  • 人民日报:从“轻微免罚”看涉企执法方式转变
  • 人民日报评外卖平台被约谈:摒弃恶性竞争,实现行业健康发展
  • 市场监管总局等五部门约谈外卖平台企业
  • 河南信阳拟发文严控预售许可条件:新出让土地开发的商品房一律现房销售