使用 python-docx 库操作 word 文档(3):读取word文档的内容
使用 python-docx 库操作 word 文档(3):读取word文档的内容
目录
- 使用 python-docx 库操作 word 文档(3):读取word文档的内容
- 一、读取段落信息
- 二、读取块信息
- 三、读取表格信息
- 四、使用模板生成文档
如果需要读取word
文档的内容,可以通过相关的变量读取段落、块、表格、行、单元格等信息。
一、读取段落信息
使用doc.paragraphs
属性返回所有段落的列表。使用paragraph.text
获取段落的内容。
程序代码如下:
from docx import Documentdoc1 = 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
获取块的内容。
程序代码如下:
from docx import Documentdoc1 = 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
获取块的内容。
程序代码如下:
from docx import Documentdoc1 = 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已认证) 注册时间
说明 主键
四、使用模板生成文档
例如:需要生成如下图所示的学生成绩通知单(每个学生生成一份)。
程序代码如下:
from docx import Documentdef 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)
程序的执行结果如下图所示: