游戏攻略网
当前位置: 首页 游戏攻略

如何用python 处理word(用Python自动化读写Word文档)

时间:2023-05-21 作者: 小编 阅读量: 1 栏目名: 游戏攻略

在我们Python处理Word的时候,段落样式可以应用于Paragraph对象,字符样式可以应用于Run对象,链接的样式可以应用于这两种对象。可以将Paragraph和Run对象的style属性设置为一个字符串,从而设置样式。对于Run对象的字符text属性,都有3个状态:True(启用)、False(禁用)和None(默认)。它有两个参数,字符串表示文本内容,后面数字是标题层级。

如何用python 处理word?大家好,最近有同事需要批量出500Word文档,按照1个Word文档耗时1分钟来算也需要8.33小时足足有1天工时于是,这位同事找到了才哥帮忙,才哥接过需求花了不到30分钟写好脚本,运行脚本不到1分钟就生成了500份Word文档并且进行了分类归档,现在小编就来说说关于如何用python 处理word?下面内容希望能帮助到你,我们来一起看看吧!

如何用python 处理word

大家好,

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

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

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

目录:

  • 1. 安装模块

  • 2. 读取Word文档

  • 3. 写入Word文档

1. 安装模块

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

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

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

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

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

2. 读取Word文档

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

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

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

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

import docxdef 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

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

3. 写入Word文档

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

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

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

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

当然,这里我们不展开介绍,就简单介绍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文本以凸出页面的方式出现

我们演示一下:

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

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

import docxdoc = docx.Documentdoc.add_paragraph('这是一个段落')doc.save('写入word.docx')

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

import docxdoc = docx.Documentp1 = doc.add_paragraph('这是一个段落')p1.add_run('加粗的一句话').bold = Truedoc.add_paragraph('这是第二个段落')doc.save('多段落.docx')

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

import docxdoc = docx.Documentdoc.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')

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

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

import docxdoc = docx.Documentp1 = doc.add_paragraph('这是一个段落')p1.add_run('加粗的一句话').bold = True# 换行doc.paragraphs[0].runs[0].add_breakdoc.save('换行.docx')

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

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

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

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

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

万水千山总是情,点个

    推荐阅读
  • 贾岛经典诗40首(大唐诗人贾岛经典五言诗作)

    题李凝幽居唐代:贾岛闲居少邻并,草径入荒园。寻隐者不遇唐代:贾岛松下问童子,言师采药去。剑客/述剑唐代:贾岛十年磨一剑,霜刃未曾试。忆江上吴处士唐代:贾岛闽国扬帆去,蟾蜍亏复圆。樵人归白屋,寒日下危峰。送无可上人唐代:贾岛圭峰霁色新,送此草堂人。麈尾同离寺,蛩鸣暂别亲。

  • 兴化方言小伙子怎么说(放屁用手揞wǎn)

    我们把一只手掌向上弯曲称为“碗”,把两只手掌并在一起向上弯曲也称为“碗”。用“放屁用手揞”形容这些弱智的措施虽有不雅之嫌,但却大有解气之妙。支书又重新物色了一位“李铁梅”,把女知青安排回南京过春节。兴化水田多,农人的许多农活都是在湴田的过程中完成的。湴河无疑是艰难的、危险的。对湴河的这种理解,在泰州人中是很普遍的。大队革委会给他戴了一顶破坏集体财产的帽子,要他接受群众的批判。

  • 半夜睡觉感觉抖是长个吗(为什么睡觉时身体会突然)

    当身体中的血钙低时,确实会导致肌肉、神经兴奋性亢进,从而引起痉挛抽搐。正确的睡姿可以有效减少临睡肌抽跃症的发生,一般情况下,多数人适宜以右侧卧位为宜。

  • 韩式酸菜怎么做(做泡菜的方法)

    韩式酸菜怎么做大白菜1.5kg、苹果个、梨1个、辣椒面150g、糯米粉50g、蒜50g、姜50g、盐50g。在盆内均匀的给白菜撒上盐,腌制12小时。苹果、梨去皮、去核,分别在榨汁机中打成汁备用。姜、蒜切末备用,小锅内倒入糯米粉。倒入苹果汁、梨汁,用中火熬成糊状。糯米糊放凉后,加入辣椒面、姜末、蒜末、搅拌均匀。腌好的白菜,挤去水分。将泡菜放入无油、无水的密封容器里,再放入冰箱,发酵3-5天即可。

  • 什么是什么什么什么的家(什么是什么什么什么的家举例)

    下面希望有你要的答案,我们一起来看看吧!什么是什么什么什么的家草丛是蟋蟀的家。大树是鸟儿的家。池塘是青蛙的家。大海是鲨鱼的家。森林是老虎的家。天空是星星的家。大地是小草的家。沙漠是骆驼的家。云朵是大雨的家。草原是羊儿的家。

  • 早上起床为什么水肿(早上起来水肿的原因)

    早上起床为什么水肿?我们一起去了解并探讨一下这个问题吧!建议患者可以到医院进行肾脏B超的检查,以及肾功能的相关检查可以明确诊断。第二种是由于心脏疾病引起来的,心脏疾病就会引起心功能不全,会导致心功能的心脏回血受限,引起患者体内血液淤积,从而导致局部出现水肿的现象,建议患者到医院检查,比如说心电图、心脏彩超、心肌酶谱等相关检查,如果发现是心脏疾病引起来的,建议及时进行相关治疗,避免引起严重的并发症。

  • 南京生育险最迟多久去办理 南京生育险多久可以拿到

    用人单位应当自用工之日起三十日内为其职工向社会保险经办机构申请办理社会保险登记。南京用人单位少报、漏报缴费基数怎么办拓展阅读:用人单位职工缴费基数如何确定?南京五项社会保险采用统一的缴费基数。职工当年度缴费基数为本人上一自然年度月平均工资收入。对职工工资收入超过缴费基数上限的,超过部分不计入缴费基数;对职工工资收入低于缴费基数下限的,按下限确定缴费基数。

  • 天猫超市怎么兑换超市卡(天猫超市卡怎么变现成现金)

    天猫超市卡/享淘卡有50面值,100面值,200面值,300面值,500面值,600面值,1000面值。因此我们在去购物的时候,都是有很多人在去进行使用的。但是现在我们的购物卡还有了另外的处理方式,我们可以将我们手上的购物卡去进行回收,京回收平台就是我们现在去进行回收平台,回收的速度快,价格还很高。

  • 承包方式一般有哪三种(承包方式都有哪三种介绍)

    工程总承包的具体方式、工作内容和责任等,由业主与工程总承包企业在合同中约定。对于一些工程较大的项目,发包人可能分别与几个勘察人、设计人、施工人分别签订若干份独立的勘察合同、设计合同、施工合同,各承包人各自独立完成承包工作。联合承包《建筑法》第二十七条第一款规定:“大型建筑工程或者结构复杂的建筑工程,可以由两个以上的承包单位联合共同承包。共同承包的各方对承包合同的履行承担连带责任。”

  • 摇到的车牌可以过户给家里人吗(摇不到号把奥迪车挂在别人名下)

    今年4月9日,两人完成了过户手续,就这样,车某做了陈某的专职驾驶员。接警后,余杭区公安分局临平刑侦中队多方调查取证,经过半个月的侦查,将车某、江某和何某3人抓获。因涉嫌诈骗罪,3人均被余杭警方依法刑事拘留,案件还在进一步侦办当中。至于陈某的那辆奥迪A6L,警方表示,因为买车人是通过二手车市场正常购得,并且对车某等人的诈骗行为并不知情,属于善意取得,无法追回。