用Python读写Word文档入门

python-docx库读写word文档 python-docx库读写word文档 一、简介 python-docx是利用python来读写word文件的第三方库。 开源地址是:https://github.com/python-openxml/python-docx 官方教程:https://python-docx.readthedocs.io/en/latest/ 安装:pip install python-docx python-docx库读写word文档主要涉及三个结构对象,层层递进。 Document:文档对象 from docx i 阅读详情

65f1253dc5a81a214afdd896f8185a9a.png

最近有同事需要批量出500个Word文档,按照1个Word文档耗时1分钟来算也需要8.33小时足足有1天工时。于是,这位同事找到了才哥帮忙,才哥接过需求花了不到30分钟写好脚本,运行脚本不到1分钟就生成了500份Word文档并且进行了分类归档!

这就是Python的魅力,让工作更轻松!

今天,我们就来了解一下用Python读写Word文档。未来,我将再出两期进行补充介绍,一篇是批量生成Word文档的方法(也就是我搞定同事需求的案例),另外一篇是详解Python写Word(包含可能你都不知道的各种Word格式),敬请期待哈~

目录:

  • 1. 安装模块

  • 2. 读取Word文档

  • 3. 写入Word文档

761b9fea32d2e1304f4401d5b1537bc4.png

1. 安装模块

这里我们用到的是python-docx模块,读写Word文档的操作均有它完成!

# 安装该模块,在命令行键入以下命令
pip install python-docx

在进行后续介绍前,我们先简单了解一下Word文档。和纯文本(比如txt)相比, .docx文件有很多种结构,这些结构在python-docx中用3种不同的类型来表示:最高一层是Document对象表示文档,每个Document对象包含一个Paragraph 对象也就是段落组成的列表,而每个Paragraph对象则包含一个Run对象的列表,至于Run对象大家可以通过下面的段落Paragraph来了解。

4dafcd1de38120bea07e137acd812f26.png
多个Run对象组成的Paragraph

我们知道Word里的文本包含有很多格式,比如字体、字号、粗体/斜体、颜色等等。一个Run对象是具有相同格式的文本,当发生变化的时候就需要一个新的Run对象,这也就是上图中1个Paragraph对象有4个Run对象的原因。

理解以上知识后,我们再来了解读与写吧。

8094a8fff1daf872a3ee0a25571ca311.png

2. 读取Word文档

我们本地创建一个案例文档,用于演示读取Word,案例文档内容如下:

e50a478098dc599d72a0642880c49e21.png
案例.docx

可以看到文档一共有四行,两行标题以及两行正文。

import docx
# 读取Word文档
doc = docx.Document(r'案例.docx')
9c2b2d3e150b6d71fdb692534f2acd94.png

我们知道了读取Word每个paragraph段落和Run,那么如何读取完整的Word文本内容呢?这里,自定义一个函数将全部的paragraph段落内容存起来,每个paragraph段落之间用换行符\n隔开即可。

import docx

def getText(fileName):
    doc = docx.Document(fileName)
    TextList = []
    for paragraph in doc.paragraphs:
        TextList.append(paragraph.text)
    
    return '\n'.join(TextList)

我们调用该函数,可以得到:

fileName = r'案例.docx'
print(getText(fileName))
标题1
这是一个段落,有粗体和斜体
大家好,我是才哥。
标题2

当然了,这里读取后输出显示的文本不带有格式属性哈。

a9aa6b987db05680e873b86c0fc6e3ac.png

3. 写入Word文档

在写入Word之前,我们先简单了解下Word的一些格式规则。

毫不夸张的讲,把全局样式玩的明白的人蛮少的。这方面主要是正文样式与标题样式,如果玩得明白的话,其实设置好了之后几乎不需要再进行啥调整,全局格式都能自动设置与更新。就我所见的大多数朋友的文档,这方面基本达不到。(感觉会被爆锤~~)

37cd278daeec33b520ae6494bb34c10f.png
全局样式

比如,我们可以设置正文样式为 微软雅黑字体,字号12,缩进,间距等等;设置标题样式为 微软雅黑字体,字号14,删除段落后间距等等。

在我们Python处理Word的时候,段落样式可以应用于 Paragraph 对象,字符样式可以应用于 Run 对象,链接的样式可以应用于这两种对象。可以将 Paragraph 和Run 对象的 style 属性设置为一个字符串,从而设置样式。这个字符串应该是一种样式的名称。如果 style 被设置为 None,就没有样式与 Paragraph 或 Run 对象关联。

当然,这里我们不展开介绍,就简单介绍Run对象上的字符属性。关于更多的介绍,我们放在第三期的 详解Python写Word里。

对于Run对象的字符text属性,都有3个状态:True(启用)、False(禁用)和None(默认)。

text属性有哪些?看下表:

属性描述
bold文本以粗体出现
italic文本以斜体出现
underline文本带下划线
strike文本带删除线
double_strike文本带双删除线
all_caps文本以大写首字母出现
small_caps文本以大写首字母出现,小写字母小两个点
shadow文本带阴影
outline文本以轮廓线出现,而不是实心
rtl文本从右至左书写
imprint文本以刻入页面的方式出现
emboss文本以凸出页面的方式出现

我们演示一下:

bc347f47f3cb23f0727f5f8ae4ebb597.png 50d2435aa99bd61555cd86e7064df1ca.png
调整样式

以上就是对段落的一些简单介绍及演示,接下来,我们来看看怎么创建并写入Word。

要创建自己的.docx 文件,就调用 docx.Document(),返回一个新的、空白的 Word Document 对象  。Document 对象的 add_paragraph()方法将一段新文本添加到文档中,并返回添加的 Paragraph 对象的引用。在添加完文本之后,向 Document 对象的 save()方法传入一个文件名字符串,将 Document 对象保存到文件。

import docx

doc = docx.Document()
doc.add_paragraph('这是一个段落')
doc.save('写入word.docx')
1bf1d3641d4ac5cc94979fddf782a612.png
写入word

我们可以添加段落、设置段落文本样式等等,比如:

import docx

doc = docx.Document()
p1 = doc.add_paragraph('这是一个段落')
p1.add_run('加粗的一句话').bold = True
doc.add_paragraph('这是第二个段落')
doc.save('多段落.docx')
45cb81b236747d14bd9a5477043c1377.png
多段落

我们还可以添加一个段位,这个段落为标题样式,这里需要用到add_heading()。它有两个参数,字符串表示文本内容,后面数字是标题层级。

import docx

doc = docx.Document()
doc.add_heading('标题',0)
doc.add_heading('标题1',1)
doc.add_heading('标题2',2)
doc.add_heading('标题3',3)
doc.add_heading('标题4',4)
doc.save('标题.docx')
d4bef7c075b140c1057635ddfb67f275.png
标题

同样,我们还可换行与换页操作。

要添加换行符(而不是开始一个新的段落),可以在 Run 对象上调用 add_break()方法,换行符将出现在它后面。如果希望添加换页符,可以将 docx.text.WD_BREAK.PAGE作为唯一的参数,传递给 add_break()  。

import docx

doc = docx.Document()
p1 = doc.add_paragraph('这是一个段落')
p1.add_run('加粗的一句话').bold = True
# 换行
doc.paragraphs[0].runs[0].add_break()
doc.save('换行.docx')
6669fcf21fabc54e38569c3066a417f0.png
换行

有人会说,一般word里还有图片嘛,当然咱们也能搞定添加图片。

有一个 add_picture()方法,可以在段落末尾添加图像 。

import docx

doc = docx.Document()
doc.add_paragraph('这是一个段落,后面带图片')
doc.add_picture('图片.png', 
                width=docx.shared.Inches(3),
                height=docx.shared.Cm(4))
doc.add_paragraph('这是第二个段落')
doc.save('图片.docx')
e5100f0557f7d2124a377cf2c4674908.png
添加图片

以上就是本次的简单入门介绍。

其实Word文档各种样式设置,数据类型展示等等非常丰富,而Python-docx这个模块其实也能进行大多数的处理。不过,日常中我们用到的功能也没那么多,此部分留作后续详情讲解哈。

9b7b2a67848d5d9aa4f3d585be09cb75.png


 

 

 

 

 

 

 

推荐阅读:

入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径

量化: 定投基金到底能赚多少钱?  | 我用Python对去年800只基金的数据分析

干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析|   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记灯谜答题王 |用Python做个海量小姐姐素描图碟中谍这么火,我用机器学习做个迷你推荐系统电影

趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!

AI: 会做诗的机器人给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影

小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|

年度爆款文案

 

 

 

 

 

 


 

 

 
点阅读原文,看Python全套!
使用Python轻松批量读取Word文档及各种Word元素的文字内容 本文介绍了如何使用Python批量从Word文档及各种Word元素中提取文本内容。包含详细步骤介绍及代码示例。 阅读详情

相关推荐

Python-docx 模块读写 Word 文档基础(一):创建文档、段落格式、字体格式设置方法

Python-docx 模块读写 Word 文档基础(一):创建文档、段落格式、字体格式设置方法前言:1、创建 Word 文档及基础用法:2、段落格式设置:3、字体格式设置:结尾:【Python与Word文档】专栏 前言: 从这篇博客开始,将开启新一个专栏【Python与Word】。该专栏将详细介绍Python的第三方包python_docx 操作 Office 办公软件 Word 文档的方法。 python-docx 模块简介: 安装方法:pip install python-docx 官方文档地址: p

三二班_周同学 1万+

Python读写word文档

和纯文本文档相比,word种含有各种格式和样式,需要设置字体格式和大小、颜色,加粗等,段落间距行距等,其中还会涉及图表、公式等插入与调整。run对象一个Run对象是具有相同格式的文本,当发生变化的时候就需要一个新的Run对象。例如:共计6个run对象的文本:AVL Cruise是AVL公司开发的一款整车及动力总成仿真分析软件。它可以研究整车的动力性、燃油经济性、排放性能及制动性能,是车辆系统的集成开发平台。AVL Cruise软件已经成功的在整车生产商和零部件供应商之间搭建起了沟通的桥梁。

群智能算法开发 4580

Python-docx 读写 Word 文档:读取正文、表格文本信息、段落格式、字体格式等

Python-docx 模块读写 Word 文档基础(三):读取文档文本信息、表格信息、段落格式、字体格式等前言:1、获取文档章节信息:2、获取段落文字信息:3、获取文字格式信息:4、获取文档中表格信息:结尾:【Python与Office】专栏 前言: 前两篇博客介绍了 Python 的 docx 模块对 Word 文档的写操作,这篇博客将介绍如何用 docx 模块读取已有 Word 文档中的信息。 本篇博客主要内容有: 1、获取文档的章节信息; 2、获取段落文本信息; 3、获取表格内文本信息; 4、获取文

三二班_周同学 4万+

python办公自动化(6)——读取word文档

夜曲编程笔记

tianshijie08的博客 1万+

【python-docx】Python读写Word文件

python-docx是一个在Python环境下读写word文档的“利器”。在使用前可以通过pip install python-docx命令安装,再通过import docx 引用即可。下面简单介绍一下 python-docx 的基本操作。 1、新建/打开及保存 文档的新建和打开比较简单,只需要用docx的Document类,若指定路径则是打开文档;若没有指定路径则是新建文档。 对文档...

M&Q的博客 8123

使用 python 创建&更改 word 文档

如果使用 python 进行 word 文档的操作呢,原来有一个叫做 python-docx 的库这么好用。

看那白熊 6163

Python进行office操作 - 用Python读写Word文档入门

在写入Word之前,我们先简单了解下Word的一些格式规则。毫不夸张的讲,把全局样式玩的明白的人蛮少的。这方面主要是正文样式与标题样式,如果玩得明白的话,其实设置好了之后几乎不需要再进行啥调整,全局格式都能自动设置与更新。就我所见的大多数朋友的文档,这方面基本达不到。(感觉会被爆锤~~)比如,我们可以设置正文样式为微软雅黑字体,字号12,缩进,间距等等;设置标题样式为微软雅黑字体,字号14,删除段落后间距等等。在我们Python处理Word的时候,段落样式可以应用于ParagraphRun和或。...

qq_27595745的博客 3181

Python python-docx库读写word文档

文章目录1.python-docx官方文档2.安装3.使用3.1 打开文档3.2 修改文档中现有的表格3.3 添加文档3.3.1 添加段落3.3.2 添加表格3.3.3 添加图片`最终效果如下:`附:获取桌面路径方法 1.python-docx官方文档 https://python-docx.readthedocs.io/en/latest/index.html 2.安装 pip install ...

超级大洋葱的博客 7662

一、使用Python对word文档进行操作

使用Python对word文档进行操作 一、安装Python-docx Python-docx是专门针对于word文档的一个模块,只能读取docx 不能读取doc文件。说白了,python就相当于windows操作系统,QQ就是跑在windows操作系统上的软件,QQ最大的作用是可以去聊天,说话。 在这里python-docx就相当于这里的qq 它主要的功能是对docx文件进行操作,管理等.(个人理解,非专业!) 1.1、安装Python-docx 1.1.1、使用虚拟环境安装python-docx pi

花开如雨的博客 6977

显著性算法 + 伪彩变换

利用opencv得到显著图和伪彩图

正在挣扎中的人 2301

GT-suite v2016的下载和安装

1 写在前面 GT-suite 是一款用来做内燃机仿真的软件。在安装过程中遇到很多问题,网上的安装教程也大都抄来抄去,试着安装了几遍都没有成功。最终在贴吧一个老哥的帖子里找到了解决办法,但是老哥的帖子也不是很详细,所以做了这个详细版本的教程。 GT-suite v2016安装包: 链接:https://pan.baidu.com/s/1JZPgJ8_-J-L8rV84-eHedQ 提取码:uj...

kisssshot的博客 3万+

第二十篇 Word文档自动化:Python批量生成、模板填充与内容修改,告别繁琐排版!

还在为重复性文档制作、手动填充模板、排版耗时而烦恼?想一键批量生成个性化合同、报告、证书,并实现内容修改与格式调整?本文是你的Word文档自动化终极指南!我们将手把手教你如何利用Python-docx库,实现Word文档的批量生成、智能模板填充、内容替换与自动化排版。本文提供完整可运行的代码、高清GIF动图演示、震撼前后对比图,让你零基础也能快速掌握,打造专属智能Word文档工厂,全面加速你的办公自动化与文档管理效率

qq_35899016的博客 3631

机器学习——笔记整理(原理、python代码)——反反复复,出精活!

回顾知识,检查自我,开拓新域。 机器学习1.监督学习 机器学习简介: 机器学习是实现人工智能的手段,其主要研究内容是如何利用数据或经验进行学习,改善具体算法的性能。 多领域交叉,涉及概率论、统计学,算法复杂度理论等多门学科 广泛应用于网络搜索、垃圾邮件过滤、推荐系统、广告投放、信用评价、欺诈检测、股票交易和医疗诊断等应用。 机器学习分类: 机器学习一般分为下面几种类别 监督学习 ( Supervised Learning) 无监督学习 ( Unsupervised Learning) 强化学习(

weixin_45666566的博客 6489

python办公自动化(入门)

python办公自动化(入门) 持久化:内存(不能长时间保存数据)到硬盘(可以长时间保存数据) 文件系统:存储和管理数据的一种方式 格式化硬盘的时候就是在创建一个文件系统 open()函数 在python中使用操作文件之前,需要使用open()打开文件,其会返回一个文件对象。 下面时open函数的参数列表: open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True) file:要创

PAN_BING的博客 1575

国内9大Coding Plan平台实测:CI/CD延迟与开发者体验横评

代码托管平台不仅是Git仓库,更是现代研发流程的‘生产力基建’核心。其底层能力涵盖Git协议优化、CI/CD调度实时性、制品库并发吞吐及RBAC权限收敛效率等关键维度。尤其在团队规模扩张、日均提交激增、多环境高频部署场景下,Webhook延迟、CI排队耗时、制品上传卡顿等应用层性能指标,远比网络层ping值更能决定开发效能。本文基于真实微服务项目(32模块、8.7万行/仓)与三类极端负载(长尾构建、热区冲突、制品洪峰),对国内9个满足Coding Plan标准的平台开展端到端压测,聚焦CI/CD延迟与开发者

weixin_29281941的博客 370

安全与加密常识(10)linux系统证书管理

1. 将自定义CA证书(如my-ca.crt)放到源目录# 2. 编辑配置文件,启用该证书(末尾添加一行 my-ca.crt)# 3. 执行命令同步(核心工作环节)# 4. 验证结果:检查是否生成哈希链接和合并到证书束ls /etc/ssl/certs/my-ca.pem # 证书文件ls /etc/ssl/certs/$(openssl x509 -hash -noout -in /usr/share/ca-certificates/my-ca.crt).0 # 哈希链接。

二进制君 292

用Python自动化读写Word文档

同事需要批量出500个Word文档,按照1个Word文档耗时1分钟来算也需要8.33小时足足有1天工时。于是,这位同事找到了才哥帮忙,才哥接过需求花了不到30分钟写好脚本,运行脚本不到1分钟就生成了500份Word文档并且进行了分类归档!...

加油,努力,认真 2702

[deprecated]第二章:DRM 框架概述:2.2 GEM显存管理概述

本文深入分析了Linux DRM子系统中GEM(Graphics Execution Manager)的显存管理机制。GEM通过核心数据结构drm_gem_object抽象显存buffer,结合drm_vma_offset_manager和drm_mm实现高效的地址空间分配与管理。该系统支持显存动态分配/回收、用户空间mmap映射、多进程访问隔离和跨设备共享等关键功能,并通过引用计数和同步机制确保并发安全。

图形/计算GPU的驱动与虚拟化技术分享园地 2546

实例演示python-docx 读写word文档 段落、图片、表格

Python 模块 python-docx 读写word文档 段落、图片、表格简介运行环境python-docx库安装Python-docx 的使用关于文档编写和样式配置jupyter环境文件启动 Anaconda Lab 简介 最近在工作中一直接触到统计月报这块的文档,之前一直是把结果打印在Jupyter lab上,然后通过复制粘贴的方式放入Word文档里,但是最近统计月报的数量越来越多,作者连复制粘贴也懒得想做了 ,遂学习了python-docx的使用,将所有结果直接写入word,最后写了这个文章,希望

大饼不会飞的博客 2万+

QT Android开发之Android端usb调试模式设置与问题解决

QT Android开发之Android端usb调试模式设置与问题解决 一.QT android开发android端usb调试模式设置 QT android开发环境搭建完成后,android设备需要打开usb调试模式才能正常连接,下面以小米ipad为例进行设置(其他手机和ipad设置方法类似) 二.小米ipad打开usb调试模式 1.设置----我的设备-----全部参数信息-----OS版本---点击这里6次以上就进入开发者模式。

热土程序园,利他愉己~ 1133

【系统架构设计师】二十三、通信系统架构设计理论与实践①

通信网络主要形式:局域网、广域网、移动通信网。 局域网网络架构有 4 种类型:单核心架构、双核心架构、环型架构、层次型架构。 广域网属于多级网络,通常由骨干网、分布网、接入网组成。在网络规模较小时,可仅由骨干网和接入网组成。通常,在大型网络构建中,通过广域网将分布在各地域的局域网互连起来,形成一个大的网络。 移动通信网为移动互联网提供了强有力的支持,尤其是5G 网络为个人用户、垂直行业等 提供了多样化的服务。

帅次的博客 3765

Python用python-docx读写word文档

python-docx库可用于创建和编辑Microsoft Word(.docx)文件。 官方文档:https://python-docx.readthedocs.io/en/latest/index.html 备注: doc是微软的专有的文件格式,docx是Microsoft Office2007之后版本使用,其基于Office Open XML标准的压缩文件格式,比 doc文件所占用空间更...

gdjlc的专栏 1785

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【python--教程】python读写word文档

前提需求: 需要提前使用pip安装python-docx,本次演示使用python版本为3.7.2。 pip3 install python-docx 1.创建新的word文档 import docx doc = docx.Document() 如果是要打开文件,则需要在括号中写如文件名 2.添加标题 doc.add_heading("测试文件",0) doc.add_heading(“标题...

qq_43017750的博客 3738

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

500个轻松处理,Python 自动化读写Word文档真香啊

大家好,最近有同事需要批量出个Word文档,按照1个Word文档耗时1分钟来算也需要小时足足有1天工时。于是,这位同事找到了我帮忙,接过需求花了不到30分钟写好脚本,运行脚本不到1分钟就生成了500份Word文档并且进行了分类归档!这就是Python的魅力,让工作更轻松!喜欢记得收藏、关注、点赞。完整版代码、技术交流,文末获取今天,我们就来了解一下用Python读写Word文档。未来,我将再出两期进行补充介绍,一篇是批量生成Word文档的方法(也就是我搞定同事需求的案例),另外一篇是详解Python写Wor

Python学习与数据挖掘 2040

092、Python 读写Word文档

Python 读写Word文档

不在同一频道上的呆子的博客 805
上一篇: MySQL 8.0 可以操作 JSON 了,牛逼。。。
下一篇: Pycharm 常用快捷键大全【快查字典版】
菜鸟学Python
博客等级 码龄9年 8089粉丝 571原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值