使用 python-docx 库操作 word 文档(3):读取word文档的内容
目录
- [使用 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)
程序的执行结果如下图所示:
