Python 进阶(七): Word 基本操作

简介: Python Word 基本操作

1. 概述

Word 是一个十分常用的文字处理工具,通常我们都是手动来操作它,本节我们来看一下如何通过 Python 来操作。

Python 提供了 python-docx 库,该库就是为 Word 文档量身定制的,安装使用 pip install python-docx 命令即可。

2. 写入

首先,我们使用 Python 来创建一个 Word 文档并向其中写入一些内容。

2.1 标题

我们先来创建 Word 文档并向其中添加标题,完整实现代码如下所示:

from docx import Document

# 创建文档
document = Document()
# 标题
document.add_heading('标题0', 0)
document.add_heading('标题1', 1)
document.add_heading('标题2', 2)
# 保存
document.save('test.docx')

看一下效果:
image.png

2.2 段落

我们接着向 Word 文档中添加段落内容,完整实现代码如下所示:

from docx import Document

# 创建文档
document = Document()
# 标题
document.add_heading('标题0', 0)
document.add_heading('标题1', 1)
# 段落
document.add_paragraph('你们平时Word文档用的多吗?')
# 列表
document.add_paragraph('A:我们用的多', style='List Bullet')
document.add_paragraph('B:我们用的少', style='List Bullet')
document.add_paragraph('C:我们用的不多不少', style='List Bullet')
document.add_heading('标题2', 2)
# 段落
document.add_paragraph('我平时基本都是手动操作Word文档,现在打算利用Python来操作它,'
                       '你们平时是手动操作Word文档?如果是的话,一起来了解下如何通过'
                       'Python来操作吧!')
# 保存
document.save('test.docx')

看一下效果:
image.png

2.3 表格

我们接着向文档中插入表格,完整实现代码如下所示:

from docx import Document

# 创建文档
document = Document()
# 标题
document.add_heading('标题0', 0)
document.add_heading('标题1', 1)
# 段落
document.add_paragraph('你们平时Word文档用的多吗?')
# 列表
document.add_paragraph('A:我们用的多', style='List Bullet')
document.add_paragraph('B:我们用的少', style='List Bullet')
document.add_paragraph('C:我们用的不多不少', style='List Bullet')
document.add_heading('标题2', 2)
# 段落
document.add_paragraph('我平时基本都是手动操作Word文档,现在打算利用Python来操作它,'
                       '你们平时是手动操作Word文档?如果是的话,一起来了解下如何通过'
                       'Python来操作吧!')
# 表格
table = document.add_table(rows=3, cols=2, style='Table Grid')
# 表头
hc = table.rows[0].cells
hc[0].text = '姓名'
hc[1].text = '年龄'
# 表体
bc1 = table.rows[1].cells
bc1[0].text = '张三'
bc1[1].text = '22'
bc2 = table.rows[2].cells
bc2[0].text = '李四'
bc2[1].text = '33'
# 保存
document.save('test.docx')

看一下效果:
image.png

2.4 图片

我们接着向文档中插入图片,完整实现代码如下所示:

from docx import Document
from docx.shared import Inches

# 创建文档
document = Document()
# 标题
document.add_heading('标题0', 0)
document.add_heading('标题1', 1)
# 段落
document.add_paragraph('你们平时Word文档用的多吗?')
# 列表
document.add_paragraph('A:我们用的多', style='List Bullet')
document.add_paragraph('B:我们用的少', style='List Bullet')
document.add_paragraph('C:我们用的不多不少', style='List Bullet')
document.add_heading('标题2', 2)
# 段落
document.add_paragraph('我平时基本都是手动操作Word文档,现在打算利用Python来操作它,'
                       '你们平时是手动操作Word文档?如果是的话,一起来了解下如何通过'
                       'Python来操作吧!')
# 表格
table = document.add_table(rows=3, cols=2, style='Table Grid')
# 表头
hc = table.rows[0].cells
hc[0].text = '姓名'
hc[1].text = '年龄'
# 表体
bc1 = table.rows[1].cells
bc1[0].text = '张三'
bc1[1].text = '22'
bc2 = table.rows[2].cells
bc2[0].text = '李四'
bc2[1].text = '33'
# 分页
# document.add_page_break()
# 图片
document.add_picture('pic.jpg', width=Inches(1))
# 保存
document.save('test.docx')

看一下效果:
image.png

2.5 样式

我们再设置一下基本样式,比如:标题居中、字体加粗、首行缩进等,完整实现代码如下所示:

from docx import Document
from docx.shared import Inches
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import Cm, Pt

# 创建文档
document = Document()
style = document.styles['Normal']
# 标题
t0 = document.add_heading('标题0', 0)
# 居中
t0.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
document.add_heading('标题1', 1)
# 首行缩进两个字符
paragraph_format = style.paragraph_format
paragraph_format.first_line_indent = Cm(0.74)
# 段落
p1 = document.add_paragraph('你们平时')
# 字体加粗
p1.add_run('Word文档').bold = True
# 斜体
p1.add_run('用的多吗?').italic = True
# 列表
document.add_paragraph('A:我们用的多', style='List Bullet')
document.add_paragraph('B:我们用的少', style='List Bullet')
document.add_paragraph('C:我们用的不多不少', style='List Bullet')
document.add_heading('标题2', 2)
# 段落
p2 = document.add_paragraph('我平时基本都是手动操作Word文档,现在打算利用Python来操作它,'
                       '你们平时是手动操作Word文档?如果是的话,')
run = p2.add_run('一起来了解下如何通过Python来操作吧!')
# 设置字体大小
run.font.size = Pt(12)
# 表格
table = document.add_table(rows=3, cols=2, style='Table Grid')
# 表头
hc = table.rows[0].cells
hc[0].text = '姓名'
hc[1].text = '年龄'
# 表体
bc1 = table.rows[1].cells
bc1[0].text = '张三'
bc1[1].text = '22'
bc2 = table.rows[2].cells
bc2[0].text = '李四'
bc2[1].text = '33'
# 分页
# document.add_page_break()
# 图片
document.add_picture('pic.jpg', width=Inches(1))
# 保存
document.save('test.docx')

看一下效果:
image.png

3. 读取

我们再来读取一下之前 Word 文档中写入的内容,完整代码实现如下所示:

from docx import Document

# 打开文档
document = Document('test.docx')
# 读取标题、段落、列表内容
ps = [ paragraph.text for paragraph in document.paragraphs]
for p in ps:
    print(p)
# 读取表格内容
ts = [table for table in document.tables]
for t in ts:
    for row in t.rows:
        for cell in row.cells:
            print(cell.text, end=' ')
        print()
相关文章
|
2月前
|
人工智能 开发者 Python
python读取word文档 | AI应用开发
在RAG系统中,构建知识库时需读取多种外部文档,其中Word文档较为常见。本文介绍如何使用`python-docx`库读取Word文档(.docx格式)中的标题、段落、表格和图片等内容。首先通过`pip install python-docx`安装库,然后利用提供的接口提取所需信息。尽管该库功能强大,但在识别标题样式时需自定义逻辑,并且仅提供图片的URI而非直接加载。示例代码展示了读取文本、识别标题、读取表格及获取图片URI的方法。【10月更文挑战第2天】
97 2
|
2月前
|
IDE 开发工具 Python
Python自动化操作word--批量替换word文档中的文字
Python自动化操作word--批量替换word文档中的文字
169 0
|
4月前
|
Linux Python Windows
Python PDF文件转Word格式,只需要3秒(附打包)
Python PDF文件转Word格式,只需要3秒(附打包)
94 3
Python PDF文件转Word格式,只需要3秒(附打包)
|
4月前
|
XML 存储 数据格式
使用Python的zipfile模块巧解Word批量生成问题
通过以上步骤,我们得到了填充了特定数据的 Word 文档。这个过程可以通过循环对多个数据集重复执行,从而实现批量生成多个 Word 文档的目标。
43 5
|
4月前
|
Python
Python——将PPT和Word转为PDF文件
Python——将PPT和Word转为PDF文件
76 1
|
5月前
|
数据采集 网络协议 数据挖掘
网络爬虫进阶之路:深入理解HTTP协议,用Python urllib解锁新技能
【7月更文挑战第30天】网络爬虫是数据分析和信息聚合的关键工具。深入理解HTTP协议及掌握Python的urllib库对于高效爬虫开发至关重要。HTTP协议采用请求/响应模型,具有无状态性、支持多种请求方法和内容协商等特点。
54 3
|
5月前
|
网络协议 Python
网络世界的建筑师:Python Socket编程基础与进阶,构建你的网络帝国!
【7月更文挑战第26天】在网络的数字宇宙中,Python Socket编程是开启网络世界大门的钥匙。本指南将引领你从基础到实战,成为网络世界的建筑师。
67 2
|
5月前
|
SQL 安全 Go
SQL注入不可怕,XSS也不难防!Python Web安全进阶教程,让你安心做开发!
【7月更文挑战第26天】在 Web 开发中, SQL 注入与 XSS 攻击常令人担忧, 但掌握正确防御策略可化解风险. 对抗 SQL 注入的核心是避免直接拼接用户输入至 SQL 语句. 使用 Python 的参数化查询 (如 sqlite3 库) 和 ORM 框架 (如 Django, SQLAlchemy) 可有效防范. 防范 XSS 攻击需严格过滤及转义用户输入. 利用 Django 模板引擎自动转义功能, 或手动转义及设置内容安全策略 (CSP) 来增强防护. 掌握这些技巧, 让你在 Python Web 开发中更加安心. 安全是个持续学习的过程, 不断提升才能有效保护应用.
59 1
|
5月前
|
安全 网络协议 网络安全
Python Socket编程大揭秘:从菜鸟到黑客的进阶之路,你准备好了吗?
【7月更文挑战第27天】Python Socket编程是网络开发的关键技能,它开启从简单数据传输到复杂应用的大门。Socket作为网络通信的基础,通过Python的`socket`模块可轻松实现跨网通信。
55 0
|
5月前
|
网络协议 安全 网络安全
震惊!Python Socket竟能如此玩转网络通信,基础到进阶全攻略!
【7月更文挑战第27天】在网络通信中, Python Socket编程是基石。Socket是程序间数据传输的端点, Python的`socket`模块简化了网络通信的实现。
43 0