python在办公上的应用_python自动化办公:玩转word之样式秘笈

上节对python如何定制word的页眉页脚做了详细介绍,当然,要作出一篇精彩的word文档,样式公布可没,本章继续介绍python如何玩转word的样式。

使用样式

f3d3572c11dfa9ec101b44f5cec54b07918fc131.jpeg?token=1f34676d66e576aee835228f4d71906c&s=05B0ED37B7F16F905465A9CC030050B2

python如何玩转word的样式

此页面使用前一页中开发的概念而不作介绍。如果术语不熟悉,请参阅word的样式参考。

访问样式

使用以下属性访问样式:

>>>document = Document()

>>>styles = document.styles

>>>styles

该对象按名称提供对定义样式的字典式访问:

>>>styles['Normal']

注意

内置样式使用其英文名称存储在WordprocessingML文件中,例如"标题1",即使在本地化版本的Word上工作的用户将在UI中看到本地语言名称,例如"Kop 1"。因为python-docx在WordprocessingML文件上运行,所以样式查找必须使用英文名称。此外部站点上提供的文档允许您创建本地语言名称和英语样式名称之间的映射::show =

用户定义的样式(也称为自定义样式)未进行本地化,并且使用与Word UI中显示的名称完全相同的名称进行访问。

该对象也是可迭代的。通过使用标识属性,可以生成定义样式的各种子集。例如,此代码将生成已定义段落样式的列表:

>>> fromdocx.enum.styleimportWD_STYLE_TYPE

>>>styles = document.styles

>>>paragraph_styles = [

...s for s in styles if s.type == WD_STYLE_TYPE.PARAGRAPH

...]

>>> forstyle in paragraph_styles:

...print(style.name)

...

Normal

Body Text

List Bullet

应用样式

242dd42a2834349b61bcd3fc67ffa9ca36d3be2f.jpeg?token=539493fc49456ee81673a833f53deece&s=BFA878230F136E491C412CCB010050B1

应用样式

word的paragraph对象,每个有style属性。将样式对象分配给此属性将应用该样式:

>>>document = Document()

>>>paragraph = document.add_paragraph()

>>>paragraph.style

>>>paragraph.style.name

'Normal'

>>>paragraph.style = document.styles['Heading 1']

>>>paragraph.style.name

'Heading 1'

样式名称也可以直接分配,在这种情况下python-docx将为您执行查找:

>>>paragraph.style = 'List Bullet'

>>>paragraph.style

>>>paragraph.style.name

'List Bullet'

也可以使用样式对象或其名称在创建时应用样式:

>>>paragraph = document.add_paragraph(style='Body Text')

>>>paragraph.style.name

'Body Text'

>>>body_text_style = document.styles['Body Text']

>>>paragraph = document.add_paragraph(style=body_text_style)

>>>paragraph.style.name

'Body Text'

添加或删除样式

通过指定唯一名称和样式类型,可以向文档添加新样式:

>>> fromdocx.enum.styleimportWD_STYLE_TYPE

>>>styles = document.styles

>>>style = styles.add_style('Citation', WD_STYLE_TYPE.PARAGRAPH)

>>>style.name

'Citation'

>>>style.type

PARAGRAPH (1)

使用该base_style属性指定新样式应从以下格式继承格式设置的样式:

>>>style.base_style

None

>>>style.base_style = styles['Normal']

>>>style.base_style

>>>style.base_style.name

'Normal'

只需调用其方法即可从文档中删除样式 :

>>>styles = document.styles

>>>len(styles)

10

>>>styles['Citation'].delete()

>>>len(styles)

9

注意

该Style.delete()方法从文档中删除样式的定义。它不会影响应用该样式的文档中的内容。具有未在文档中定义的样式的内容使用该内容对象的默认样式来呈现,例如在段落的情况下为"正常"。

定义字符格式

字符,段落和表格样式都可以指定要应用于具有该样式的内容的字符格式。可以在样式中指定可以直接应用于文本的所有字符格式。示例包括字体字体和大小,粗体,斜体和下划线。

这三种样式类型中的每一种都具有 提供对象访问的属性。样式的对象提供了获取和设置该样式的字符格式的属性。

这里提供了几个例子。有关完整的可用属性集,请参阅API文档。

可以像这样访问样式的字体:

>>> fromdocximportDocument

>>>document = Document()

>>>style = document.styles['Normal']

>>>font = style.font

字体和大小设置如下:

>>> fromdocx.sharedimportPt

>>>font.name = 'Calibri'

>>>font.size = Pt(12)

许多字体属性是三值,这意味着他们可以采取的价值观 True,False和None。True表示该物业处于"开启"状态,表示该物业处于False"关闭"状态。从概念上讲,该None值意味着"继承"。由于样式存在于继承层次结构中,因此能够在层次结构中的正确位置指定属性非常重要,通常尽可能远离层次结构。例如,如果所有标题都应该是Arial字体,那么在标题1 样式上设置该属性并使标题2从标题1继承更有意义。

大胆和斜体都是三态属性,如全帽,删除线,上标等等。有关完整列表,请参阅API文档:

>>>font.bold, font.italic

(None, None)

>>>font.italic = True

>>>font.italic

True

>>>font.italic = False

>>>font.italic

False

>>>font.italic = None

>>>font.italic

None

下划线是一种特殊情况。它是三态属性和枚举值属性的混合体。True意味着单一下划线,是迄今为止最常见的。False意味着没有下划线,但None如果不需要下划线,则更经常是正确的选择,因为很少从基础样式继承下划线。其他形式的下划线(如double或dashed)是使用枚举的成员指定的:

>>>font.underline

None

>>>font.underline = True

>>># or perhaps

>>>font.underline = WD_UNDERLINE.DOT_DASH

定义段落格式

段落样式和表格样式都允许指定段落格式。这些样式通过其属性提供对对象的访问。

段落格式包括布局行为,例如对齐,缩进,前后空格,之前的分页控制。有关可用属性的完整列表,请参阅该对象的API文档页面。

下面是一个如何创建一个段落样式的示例,该段落样式具有1/4英寸的悬挂缩进,上方12个点的间距:

>>> fromdocx.enum.styleimportWD_STYLE_TYPE

>>> fromdocx.sharedimportInches, Pt

>>>document = Document()

>>>style = document.styles.add_style('Indent', WD_STYLE_TYPE.PARAGRAPH)

>>>paragraph_format = style.paragraph_format

>>>paragraph_format.left_indent = Inches(0.25)

>>>paragraph_format.first_line_indent = Inches(-0.25)

>>>paragraph_format.space_before = Pt(12)

>>>paragraph_format.widow_control = True

使用段落特定的样式属性

段落样式具有一个 属性,该属性指定要应用于在该样式的段落之后插入的新段落的样式。当样式通常只在序列中出现一次(例如标题)时,这非常有用。在这种情况下,完成标题后,段落样式可以自动设置回主体样式。

在最常见的情况(正文段落)中,后续段落应该与当前段落具有相同的样式。如果未指定下一个段落样式,则默认情况下通过应用相同样式来处理此情况。

以下是如何将标题1样式的下一个段落样式更改为正文文本的示例 :

>>> fromdocximportDocument

>>>document = Document()

>>>styles = document.styles

>>>styles['Heading 1'].next_paragraph_style = styles['Body Text']

可以通过分配None或样式本身来恢复默认行为:

>>>heading_1_style = styles['Heading 1']

>>>heading_1_style.next_paragraph_style.name

'Body Text'

>>>heading_1_style.next_paragraph_style = heading_1_style

>>>heading_1_style.next_paragraph_style.name

'Heading 1'

>>>heading_1_style.next_paragraph_style = None

>>>heading_1_style.next_paragraph_style.name

'Heading 1'

控制样式在Word UI中的显示方式

样式的属性分为两类,行为属性 和格式属性。其行为属性控制样式在Word UI中出现的时间和位置。其格式设置属性确定应用样式的内容的格式,例如字体的大小及其段落缩进。

一种风格有五种行为属性:

·

·

·

·

·

有关这些行为属性如何交互的说明,请参阅" 的" 部分,以确定样式在Word UI中的显示时间和位置。

该priority属性采用整数值。其他四种样式行为属性是三态,这意味着它们可以取值True(on),False(off)或None(inherit)。

在样式库中显示样式

以下代码将使"正文文本"段落样式首先显示在样式库中:

>>> fromdocximportDocument

>>>document = Document()

>>>style = document.styles['Body Text']

>>>style.hidden = False

>>>style.quick_style = True

>>>style.priorty = 1

从样式库中删除样式

此代码将从样式库中删除"正常"段落样式,但允许它保留在推荐列表中:

>>>style = document.styles['Normal']

>>>style.hidden = False

>>>style.quick_style = False

使用潜在样式

有关如何定义尚未在.docx文件的styles.xml部分中定义的内置样式的行为属性的说明, 请参阅的和部分 。

访问文档中的潜在样式

可以从styles对象访问文档中的潜在样式:

>>>document = Document()

>>>latent_styles = document.styles.latent_styles

一个对象支持len(),迭代和样式名字典式的访问:

>>>len(latent_styles)

161

>>>latent_style_names = [ls.name forls in latent_styles]

>>>latent_style_names

['Normal', 'Heading 1', 'Heading 2', ... 'TOC Heading']

>>>latent_quote = latent_styles['Quote']

>>>latent_quote

>>>latent_quote.priority

29

更改潜在样式默认值

该对象还提供对当前文档中内置样式的默认行为属性的访问。这些默认值为 定义的任何未定义属性以及没有明确潜在样式定义的内置样式的所有行为属性提供值。有关完整可用属性集的对象,请参阅API文档 :

>>>latent_styles.default_to_locked

False

>>>latent_styles.default_to_locked = True

>>>latent_styles.default_to_locked

True

添加潜在的样式定义

可以使用方法添加新的潜在样式 。此代码为内置样式"List Bullet"添加了一种新的潜在样式,将其设置为显示在样式库中:

>>>latent_style = latent_styles['List Bullet']

KeyError: no latent style with name 'List Bullet'

>>>latent_style = latent_styles.add_latent_style('List Bullet')

>>>latent_style.hidden = False

>>>latent_style.priority = 2

>>>latent_style.quick_style = True

删除潜在的样式定义

可以通过调用其delete()方法删除潜在样式定义 :

>>>latent_styles['Light Grid']

>>>latent_styles['Light Grid'].delete()

>>>latent_styles['Light Grid']

KeyError: no latent style with name 'Light Grid'

有关样式的介绍,就暂时到这里,老铁们有什么意见和需求请尽管提,觉得不错的点个大赞。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gartner发布2021年隐私技术成熟度曲线,数字伦理登上顶点

编辑 | 宋慧 供稿 | Gartner 随着人们日益意识到其个人信息的价值并对透明度的缺乏和持续的滥用感到失望,数字伦理登上了Gartner 2021年隐私技术成熟度曲线的顶点。 Gartner将数字伦理定义为人、企业机构和物之间开展电子交互所遵循的价值和伦理道德原则体系。随着…

微服务+异步工作流+ Serverless,Netflix 决定弃用稳定运行 7 年的旧平台

简介: 2021 年,Netflix 会将大部分的工作负载从 Reloaded 转移到 Cosmos 平台。Cosmos 是一个计算平台,它将微服务的最佳特性与异步工作流以及 Serverless 结合在一起。 作者 | Frank San Miguel 策划 | 田晓旭 2021 年,Netflix …

实时 OLAP, 从 0 到 1

简介: BTC.com 团队在实时 OLAP 方面的技术演进过程及生产优化实践。 作者|高正炎 本文主要介绍 BTC.com 团队在实时 OLAP 方面的技术演进过程及生产优化实践,内容如下: 业务背景机遇挑战架构演进架构优化未来展望一、业务背景 …

Gartner发布2021年数字商务技术成熟度曲线,重点关注四项技术

应用领导人应密切关注可视化配置、数字钱包、客户身份和访问管理以及虚拟客户助理这四项将在未来两年对数字商务产生重大影响的技术。 编辑 | 宋慧 供稿 | Gartner 根据Gartner 2021年数字商务技术成熟度曲线(Hype Cycle for Digital Commerce)&#x…

鸿蒙手机系统还没有开发,华为鸿蒙手机太难了!引发开发者大吐槽:为何没有自己独特风格?-互联网/电商-文章-小虾米...

【华为鸿蒙手机太难了!引发开发者大吐槽:为何没有自己独特风格?】互联网/电商-文章-小虾米2020-12-27 11:32:02 小虾米帐号:军事科技(tabc) 关注我 举报 来源:qq新闻 浏览量(129)【12月28日讯】导语&#xff0c…

Fluid给数据弹性一双隐形的翅膀 (1) -- 自定义弹性伸缩

简介: 弹性伸缩作为Kubernetes的核心能力之一,但它一直是围绕这无状态的应用负载展开。而Fluid提供了分布式缓存的弹性伸缩能力,可以灵活扩充和收缩数据缓存。 它基于Runtime提供了缓存空间、现有缓存比例等性能指标, 结合自身对于Runtime资源…

利用 Python 实现多任务进程

来源:杰哥的IT之旅作者:阿拉斯加一、进程介绍 进程:正在执行的程序,由程序、数据和进程控制块组成,是正在执行的程序,程序的一次执行过程,是资源调度的基本单位。程序:没有执行的代码…

小白也能懂的 Nacos 服务模型介绍

简介: 理解了 Nacos 的服务模型,也有利于我们了解 Nacos 背后的工作原理,从而确保我们正确地使用 Nacos。 作者:岛风 前言 按照目前市场上的主流使用场景,Nacos 被分成了两块功能:服务注册发现&#xff0…

那些与 IE 相伴的日子

来源:零一作者:前端印象大家好,IE 大家都不陌生,毕竟出现在大家的视野中已经很久很久,久到有20多年,当然也因前端技术的快速更新,给需要兼容IE浏览器的前端程序员带来了不少的困扰。慢慢地&…

html代码style图片width,HTML Style columnWidth用法及代码示例

DOM中的columnWidth属性用于指定列的宽度。用法:返回columnWidth属性:object.style.columnWidth设置columnWidth属性:object.style.columnWidth "auto | length | initial | inherit"属性值:auto:缺省值。列宽将由浏览器确定lengt…

KubeVela 1.0 :开启可编程式应用平台的未来

简介: 如果你对云原生领域不太关注,可能对 KubeVela 还没有做过太深入的了解。别着急,本文就借着 v1.0 发布之际,为你详细的梳理一次 KubeVela 项目的发展脉络,解读它的核心思想和愿景,领悟这个正冉冉升起的…

android-x86 镜像iso下载_2019年微软MSDN原版镜像系统下载地址 Win10/7原版系统iso镜像文件...

如今,不少用户开始讨厌以GHOST形式来安装操作系统,虽然步骤十分简单,但是从网上下载的GHOST系统,已经形成了一个黑色产业链,为了盈利,捆绑了软件全家桶、恶意强制主页,甚至捆绑木马,…

大流量场景下如何云淡风轻地进行线上发布?

简介: 本文介绍了微服务治理下金丝雀发布的能力,解决了发布期间少量流量验证新功能的问题。 前言 本文,我们继续聊聊《揭秘大流量场景下发布如丝般顺滑背后的原因》中的另外一环,灰度发布,也叫金丝雀发布。 ​ 很多互…

匿名提问:rm -rf了怎么办?

整理 | 易璜珵出品 | 《新程序员》IT界流传着一个神秘的代码,老程序员听了总是意味深长地一笑,而新手程序员则总是手痒地想试试,那就是删库指令rm -rf。这一行代码下去,海量数据可能就荡然无存。近几年发生的“删库跑路”事件让这…

ubuntu matlab_有没有人和我一起整理Python的matlab代替

想找人一起整理Python中matlab代替的包,最好是能够将常用功能用tkinter封装起来,积少成多,逐步逼近完整。比如将scipy中的最小二乘法拟合功能,找个图形界面封装一下,就变成了曲线拟合工具,可以代替matlab的…

逸仙电商Seata企业级落地实践

简介: 本文将会以逸仙电商的业务作为背景, 先介绍一下seata的原理, 并给大家进行线上演示, 由浅入深去介绍这款中间件, 以便读者更加容易去理解 Seata 这个中间件。 作者 | 张嘉伟(GitHub ID:l…

“类云”的存储服务什么样?Pure Storage发布Pure Fusion等系列新品

一键部署自动化存储平台与云原生数据库即服务,无缝连接基础设施运营与应用程序。 编辑 | 宋慧 出品 | CSDN 云计算 近日,专为多云环境提供存储即服务的Pure Storage发布一系列现代化基础设施、运营及应用程序,这是Pure Storage迈向创新现代…

mac mongodb可视化工具_MongoDB从立地到成佛(介绍、安装、增删改查)

文章作者公众号bigsai,已收录在回车课堂,如有帮助还请不吝啬点个赞赞支持一下!课程导学大家好我是bigsai,我们都学过数据库,但你可能更熟悉关系(型)数据库例如MySQL,SQL SERVER,ORACLE等,对于非…

阿里巴巴云原生 etcd 服务集群管控优化实践

简介: 这些年,阿里云原生 etcd 服务发生了翻天覆地的变化,这篇文章主要分享一下 etcd 服务在面对业务量大规模增长下遇到的问题以及我们是如何解决的,希望对读者了解 etcd 的使用和管控运维提供经验分享。 作者 | 陈星宇&#xff…

计算机组装与维护思考问题,计算机组装与维护中的常见问题及解决方法

郜庆国摘要:在如今的社会下,各个领域的很多行业在工作的时候都需要用到计算机来帮助工作的进行,因为计算机在很多情况下都能够很好地进行计算与帮助,所以我们在进行工作时,不仅提高了工作的效率,还解决了很…