专栏首页Python小二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')

看一下效果:

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')

看一下效果:

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')

看一下效果:

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')

看一下效果:

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')

看一下效果:

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()推荐阅读

本文分享自微信公众号 - Python小二(chengxuzhijian),作者:程序之间

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python 数据分析(三):初识 Pandas

    Pandas 基于 NumPy 开发,它提供了快速、灵活、明确的数据结构,旨在简单、直观地处理数据。

    Python小二
  • 53 道 Python 面试题,帮你成为大数据工程师

    本着这种精神,这是我的python面试/工作准备问题和答案。大多数数据科学家编写了大量代码,因此这对科学家和工程师均适用。

    Python小二
  • Python 分析电影《南方车站的聚会》

    《南方车站的聚会》由刁亦男执导,主要演员包括:胡歌、桂纶镁、廖凡、万茜等,该片于 2019 年 5 月 18 在戛纳电影节首映,2019 年 12 月 6 日在...

    Python小二
  • 037|巴黎圣母院大火与自动化仓储

    巴黎当地时间2019年4月15日下午6:50。正搭起脚手架进行维修工程的巴黎圣母院遭遇大火,滚滚浓烟遮蔽了塞纳河畔的天空。火势蔓延速度很快,难以控制。在紧张围观...

    老King
  • java 单链表 练习

    Theone67
  • VR的发展是否会影响到我们看世界的步伐? | 拔刺

    根据唯物论观点,VR的发展会对我们的认知产生很大的影响。由于物质决定意识,意识反作用于物质。我们在接受虚拟科技的同时,潜移默化的被影响。

    镁客网
  • 深入浅出Node.js

    2.模块定义:提供exports对象用于导出当前模块的方法或者变量,并且是唯一导出的出口

    硬核项目经理
  • 「小程序JAVA实战」小程序页面的上拉下拉刷新(50)

    PS:上拉刷新不需要做任何的配置,下拉刷新需要开启配置,每次请求建议开启 wx.showNavigationBarLoading() 和 wx.hideNavi...

    IT故事会
  • Python爬虫进阶必备 | XX读书window.__DATA加密分析

    aHR0cHM6Ly9zZWFyY2guZG91YmFuLmNvbS9ib29rL3N1YmplY3Rfc2VhcmNoP3NlYXJjaF90ZXh0PSVF...

    咸鱼学Python
  • Hello World

    用户5161060

扫码关注云+社区

领取腾讯云代金券