使用 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)

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

相关推荐
vxiam14xxx17 小时前
【Java Swing 项目】java 聊天系统
java·开发语言·python
Howard在远程18 小时前
[编程农场][The Farmer Was Replaced]——Carrot & Pumpkin
python
PieroPc18 小时前
用python streamlit sqlite3 写一个聊天室
python·streamlit·聊天室
低头不见18 小时前
策略模式上下文管理
windows·python·策略模式
Xander W18 小时前
基于K8s集群的PyTorch DDP 框架分布式训练测试(开发机版)
人工智能·pytorch·分布式·python·深度学习·kubernetes
文火冰糖的硅基工坊18 小时前
[人工智能-大模型-103]:模型层 - M个神经元组成的单层神经网络的本质
python·算法·机器学习
坚持就完事了18 小时前
XPath语法及Python的lxml包学习
python
孤独的追光者18 小时前
使用Qt Designer开发上位机
开发语言·python·qt
杨超越luckly19 小时前
HTML应用指南:利用POST请求获取全国爱回收门店位置信息
大数据·前端·python·信息可视化·html
TF男孩19 小时前
小技巧:让你写的python代码直接点击运行
python