使用 python-docx 库操作 word 文档(3):读取word文档的内容

使用 python-docx 库操作 word 文档(3):读取word文档的内容

目录

如果需要读取word文档的内容,可以通过相关的变量读取段落、块、表格、行、单元格等信息。

一、读取段落信息

使用doc.paragraphs属性返回所有段落的列表。使用paragraph.text获取段落的内容。

程序代码如下:

python 复制代码
from docx import Document

doc1 = Document(r"D:\0工作文档\typora文档\word\test.docx")  # 创建word文档
print(len(doc1.paragraphs))
print(doc1.paragraphs[0].text)
print(doc1.paragraphs[1].text)

程序的运行结果为:
379
一、绪论
(一)课题背景

二、读取块信息

使用paragraph.runs属性返回段落中所有块的列表。使用run.text获取块的内容。

程序代码如下:

python 复制代码
from docx import Document

doc1 = Document(r"D:\0工作文档\typora文档\word\test.docx")  # 创建word文档
p=doc1.paragraphs[2]
print(p.text)
runs=p.runs
print(len(runs))
for run in runs:
    print(run.text)
    
程序的运行结果为:
随着全球化进程的加速,我国的旅游产业正在持续优化升级,各地也正在着力推动我国向世界旅游强国迈进。在景区管理领域,数字化与智能化转型已经成为了提升运营效能的关键方法。通过构建智慧票务体系,不仅可以优化服务的流程,也能够实现提高管理模式的标准化与人性化。根据相关的研究表明,数字化管理手段能够提升景区科学决策,有效促进服务品质和品牌价值的双重提升。
38
随着全球
化进程
的
加速,我国
的
旅游产业
正在
持
续优化升
级,各地
也
正
在
着力推动我国向世界旅游强国迈进。在景区管理领域,数字化与智能化转型已
经
成为
了
提升运营效能的关键
方法
。通过构建智慧票
务体系,不仅
可以
优化服务
的
流程,
也能够
实现
提高
管理模式的标准化与人性化
。
根据
相关
的
研究表明,数字化管理手段
能够
提升景区科学决策,有效促进服务品质
和
品牌价值的双重提升。

三、读取表格信息

使用doc.tables属性返回文档中所有表格的列表。使用run.text获取块的内容。

程序代码如下:

python 复制代码
from docx import Document

doc1 = Document(r"D:\0工作文档\typora文档\word\test.docx")  # 创建word文档
t=doc1.tables
print("表格数量:",len(t))  # 返回文档中表格的数量
t1=t[0]  # 返回第一个表格
print("第一个表格的行数:",len(t1.rows))  # 返回第一个表格的行数
print("=="*20)
print("==============按行显示表格内容:=================")
print("=="*20)
for row in t1.rows:
    for cell in row.cells:
        print(cell.text, end=' ')
    print("")

print("第一个表格的列数:",len(t1.columns))  # 返回第一个表格的列数
print("=="*20)
print("==============按行列显示表格内容:=================")
print("=="*20)
for column in t1.columns:
    for cell in column.cells:
        print(cell.text, end=' ')
    print("")  
    
程序的运行结果为:
表格数量: 11
第一个表格的行数: 7
========================================
==============按行显示表格内容:=================
========================================
字段名称 数据类型 备注 说明 
visitor_id CHAR(36) 游客ID 主键 
name VARCHAR(50) 姓名  
id_card CHAR(18) 身份证号 (加密存储)  
phone VARCHAR(20) 手机号  
auth_status TINYINT(1) 实名认证状态 (0未认证/1已认证)  
created_at DATETIME 注册时间  
第一个表格的列数: 4
========================================
==============按行列显示表格内容:=================
========================================
字段名称 visitor_id name id_card phone auth_status created_at 
数据类型 CHAR(36) VARCHAR(50) CHAR(18) VARCHAR(20) TINYINT(1) DATETIME 
备注 游客ID 姓名 身份证号 (加密存储) 手机号 实名认证状态 (0未认证/1已认证) 注册时间 
说明 主键      

四、使用模板生成文档

例如:需要生成如下图所示的学生成绩通知单(每个学生生成一份)。

程序代码如下:

python 复制代码
from docx import Document

def create_score(d):
    doc1 = Document()  # 创建word文档
    doc1.add_heading(f'{d[1]}成绩通知单',0)  # 添加标题
    t=doc1.add_table(1,6)   # 添加表格,1行6列
    row=t.rows[0]   # 设置表格第一行每个单元格内容
    row.cells[0].text = "学号"
    row.cells[1].text = "姓名"
    row.cells[2].text = "语文"
    row.cells[3].text = "数学"
    row.cells[4].text = "英语"
    row.cells[5].text = "班级"
    row=t.add_row()  # 添加一行,并设置每个单元格内容
    row.cells[0].text = d[0]
    row.cells[1].text = d[1]
    row.cells[2].text = str(d[2])
    row.cells[3].text = str(d[3])
    row.cells[4].text = str(d[4])
    row.cells[5].text = d[5]
    doc1.save(f"D:/0工作文档/typora文档/word/score_{d[1]}.docx") # 保存为单个文件

if __name__ == '__main__':
    data = [
        ('100001', '李刚', 80, 98, 85, '八年级二班'),
        ('100002', '张洪涛', 95, 66, 92, '八年级二班'),
        ('100003', '张静静', 77, 78, 94, '八年级二班'),
        ('100004', '李晓红', 68, 84, 74, '八年级二班'),
        ('100005', '王大光', 91, 97, 93, '八年级二班'),
        ('100006', '李珍珍', 87, 78, 79, '八年级二班')
    ]
    for d in data:
        create_score(d)

程序的执行结果如下图所示:

相关推荐
cehuishi95273 小时前
excel中关联word邮件合并使用
word·excel·批量打印·邮件合并
SoberChina3 小时前
Jasperreport 导出word 多个element重叠部分导致不显示(不支持)
pdf·word·jaspersoft·模版打印
这里有鱼汤3 小时前
别再凭感觉画股票箱体了!用DBSCAN让你的策略更稳、更准、更客观
后端·python
AALoveTouch3 小时前
同程旅行签到脚本
python
晓风残月淡3 小时前
JVM字节码与类的加载(一):类的加载过程详解
开发语言·jvm·python
ygyqinghuan3 小时前
PyTorch 实现 MNIST 手写数字识别
人工智能·pytorch·python
reasonsummer4 小时前
【办公类-115-05】20250920职称资料上传04——PDF和PDF合并PDF、图片和PDF合并PDF(十三五PDF+十四五图片)
java·python·pdf
缺点内向4 小时前
Java:将 Word 文档转换为密码保护的 PDF 文件
java·pdf·word
HsuHeinrich4 小时前
利用径向柱图探索西班牙语学习数据
python·数据可视化