python的docx模块处理word
安装docx模块
pip3 install python-docx
读取word整文
from docx import Document doc=Document("./a.docx") for p in doc.paragraphs: print(p.text)
简单实例1
# word_1.py # 导入库 from docx import Document from docx.shared import Pt from docx.shared import Inches from docx.oxml.ns import qn # 新建空白文档 doc1 = Document() # 新增文档标题 doc1.add_heading('如何使用 Python 创建 Word',0) # 创建段落描述 doc1.add_paragraph('我们平时使用 Word 用来做文章的处理,可能没想过它可以用 Python 生成,下面我们就介绍具体如何操作……') # 创建一级标题 doc1.add_heading('安装 python-docx 库',1) # 创建段落描述 doc1.add_paragraph('现在开始我们来介绍如何安装 python-docx 库,具体需要以下两步操作:') # 创建二级标题 doc1.add_heading('第一步:安装 Python',2) # 保存文件 doc1.save('word1.docx')
查看效果
简单实例2
对“表扬信.docx”文档进行修改,需要修改的地方已在图中标记出。
- 第一个箭头处,首行缩进2字符
- 第二个箭头处,对段落进行左缩进2字符,并添加“向小z同学学习!”
- 第三个和第四个箭头处,进行右对齐,并右缩进2cm
- 赵东来,修改为小z
- 陆亦可,修改为大Z
- 她,修改为他
- 狗粮,修改为猫粮
代码如下
from docx import Document from docx.shared import Cm from docx.enum.text import WD_ALIGN_PARAGRAPH import re document=Document(r"g:\CS\Python Scripts\表扬信.docx") # 首先对段落格式进行修改,docx默认标题也属于段落,因此“表扬信”是第一段 paragraphs=document.paragraphs paragraphs[2].paragraph_format.first_line_indent=Cm(0.74) paragraphs[3].paragraph_format.left_indent=Cm(0.74) paragraphs[4].paragraph_format.alignment=WD_ALIGN_PARAGRAPH.RIGHT paragraphs[4].paragraph_format.right_indent=Cm(2) paragraphs[5].paragraph_format.alignment=WD_ALIGN_PARAGRAPH.RIGHT paragraphs[5].paragraph_format.right_indent=Cm(2) # 对文本进行修改 # 修改第二段 paragraphs[1].text="小Z同学:" # 将第三段陆亦可替换为大Z,她替换为他。通过python的正则表达式,可以很简单地实现文本的替换和查找。 text=re.sub('陆亦可','大Z',paragraphs[2].text) text=re.sub('她','他',text) paragraphs[2].text=text # 在第四段后面加上 paragraphs[3].add_run("向小z同学学习!") # 修改表格里面的内容 tables=document.tables tables[0].cell(1,0).text="猫粮" tables[0].cell(2,0).text="猫粮" tables[0].cell(3,0).text="猫粮" # 插入一张图片,图片宽度设置为11.8cm document.add_picture('fun.jpg', width=Cm(11.8)) document.save()
修改后效果
简单实例3
from docx import Document import time import re # 读取模板文件 doc_zh = Document("/auto/data/综合平台应用层点检早报.docx") doc_wl = Document("/auto/data/物流平台应用层点检报告.docx") # 变量定义 today_time = time.strftime("%Y/%m/%d", time.localtime()) today_time2 = time.strftime("%Y%m%d", time.localtime()) # time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) file_name_zh = "综合平台应用层点检早报_" + today_time2 file_name_wl = "物流平台应用层点检报告_" + today_time2 # 修改word paragraphs_zh = doc_zh.paragraphs paragraphs_zh[6].text = re.sub('日期',today_time,paragraphs_zh[6].text) paragraphs_wl = doc_wl.paragraphs paragraphs_wl[11].text = re.sub('日期',today_time,paragraphs_wl[11].text) # 保存文件 doc_zh.save("/auto/data_finish/" + file_name_zh + ".docx") doc_wl.save("/auto/data_finish/" + file_name_wl + ".docx") print("word_auto finish") # for p in doc.paragraphs: # print(p.text)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人